#1493. BRACKET - Biểu thức ngoặc

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Biểu thức ngoặc đúng được định nghĩa như sau:

  • Một xâu rỗng biểu diễn một biểu thức ngoặc đúng;
  • Nếu A là một xâu biểu diễn một biểu thức ngoặc đúng thì (A) cũng là biểu diễn một biểu thức ngoặc đúng;
  • Nếu hai A, B là xâu biểu diễn biểu thức ngoặc đúng thì AB cũng là biểu diễn một biểu thức ngoặc đúng.

Thầy Alice muốn tạo một biểu thức ngoặc đúng, có n vị trí có thể đặt ngoặc. Các vị trị được đánh số từ 1 đến n từ trái sang phải, bắt đầu với giá trị s=0 , tại mỗi vị trí i\ (1\le i \le n) thầy Alice có ba lựa chọn:

  • Đặt ví trí này là dấu ( và thay s = s + a_i ;
  • Đặt ví trí này dấu ) và thay s = s - a_i ;
  • Bỏ qua vị trí này. Sau khi lựa chọn xong, lấy các kí tự từ trái sang phải ở các vị trí đặt dấu ( hoặc ) để tạo được biểu thức ngoặc đúng mà s đạt giá trị lớn nhất.

Dữ liệu:

  • Dòng thứ nhất chứa số nguyên dương n ;
  • Dòng thứ hai chứa n số nguyên a_1, a_2, \ldots, a_n\ (|a_i| \le 10^9) .

Kết quả:

  • Ghi ra một số nguyên duy nhất là giá trị s lớn nhất có thể chọn được.

Ví dụ:

Dữ liệu:

4
0 -5 1 2

Kết quả:

5

Dữ liệu:

9
5 -2 2 3 -4 -4 -1 -2 9

Kết quả:

21

Giới hạn:

  • 25\% số test ứng với 25\% số điểm của bài có n\le 10 ;
  • 25\% số test khác ứng với 25\% số điểm của bài có n\le 10^3 ;
  • 25\% số test khác ứng với 25\% số điểm của bài có n\le 10^5 và có không quá 10^3 giá trị a_i khác 0 ;
  • 25\% số test còn lại ứng với 25\% số điểm của bài có n\le 10^5 .