Hai đoạn con

Xem dạng PDF

Gửi bài giải

Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho mảng ~a~ gồm ~n~ phần tử. Hãy tìm hai đoạn con liên tiếp, không giao nhau, khác rỗng của mảng ~a~, sao cho tổng của hai đoạn con đó là lớn nhất.

Nói cách khác, hãy tìm ra bộ bốn chỉ số ~i, j, u, v~ (~1 \le i \le j < u \le v \le n~), sao cho tổng ~a[i...j] + a[u...v]~ là lớn nhất.

Input

Dòng đầu tiên chứa số nguyên dương ~n~ (~2 \le n \le 3 \times 10^5~) là số phần tử của mảng.

Dòng thứ hai gồm ~n~ số nguyên ~a_i~ (~0 \le |a_i| \le 10^9~) là các phần tử của mảng.

Output

Tổng lớn nhất của hai đoạn con không giao nhau, khác rỗng.

Sample Input 1

5
3 -2 5 -3 4

Sample Output 1

10

Notes

Để đạt tổng lớn nhất là ~10~, ta chọn đoạn con ~[1, 3]~ và đoạn con ~[5, 5]~. Đây là hai đoạn con có tổng dương lớn nhất, không giao nhau, nên kết quả ~6 + 4 = 10~ là tối ưu.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.