Mảng con tròn có tổng lớn nhất

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng số nguyên vòng \(a\) độ dài \(n\). Hãy tìm tổng lớn nhất có thể của một mảng con liên tiếp không rỗng của \(a\).

Mảng vòng có nghĩa là phần tử cuối của mảng nối liền với phần tử đầu tiên của mảng. Cụ thể hơn, phần tử ngay sau \(a_i\)\(a_{(i + 1) \bmod n}\) và phần tử ngay trước \(a_i\)\(a_{(i - 1 + n) \bmod n}\).

Lưu ý: Một mảng con chỉ được chứa mỗi phần tử của mảng ban đầu tối đa một lần. Nghĩa là với một mảng con \(a_i, a_{i+1}, \dots, a_j\), độ dài của mảng con này không được vượt quá \(n\).

Input

  • Dòng đầu tiên chứa một số nguyên dương \(n\) — số lượng phần tử của mảng.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) cách nhau bởi khoảng trắng.

Output

  • In ra một số nguyên duy nhất là tổng lớn nhất của mảng con vòng.

Constraints

  • \(1 \le n \le 3 \cdot 10^4\)
  • \(-3 \cdot 10^4 \le a_i \le 3 \cdot 10^4\)

Example

Test 1

Input
4
1 -2 3 -2
Output
3
Note

Mảng con \([3]\) có tổng lớn nhất là \(3\).

Test 2

Input
3
5 -3 5
Output
10
Note

Mảng con \([5, 5]\) (nối từ phần tử cuối vòng lên phần tử đầu) có tổng lớn nhất là \(5 + 5 = 10\).

Test 3

Input
3
-3 -2 -3
Output
-2
Note

Mảng con \([-2]\) có tổng lớn nhất là \(-2\).

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(1 \le n \le 5000\).
  • Subtask \(2\) (\(50\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.