Tìm đoạn con liên tiếp dài nhất có tổng không âm

Screenshot 2023-01-25 165935

int max_sum = INT_MIN, sum = 0, len = 0;
    for (int i = 0; i < n; i++) {
        sum += a[i];
        if (sum > max_sum) {
            max_sum = sum;
            len++;
        }
        else {
            len = 0;
        }
    }
    cout << len;

mình code thế này đúng ko mn. Mong mọi người giúp mình

Code của bạn là đang tìm dãy các số dương liên tục :slight_smile:S_i - S_{i-1} > 0 \Leftrightarrow a_i > 0

Bài này có thể chuyển đổi thành tìm cặp nghịch thế xa nhau nhất trên mảng suffix sum S_{n} = a_n,\\ S_{n-1} = S_n + a_n, đầu tiên là chạy 2 mảng phụ ngược chiều nhau.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?