trang chủ / đề bài / threeparts

Ba phần của mảng

Đề bài

Mô tả

Cho mảng d1,d2,…,dn gồm n số nguyên dương.

Hãy chia mảng thành ba phần (một số phần có thể rỗng) sao cho mỗi phần là một đoạn liên tiếp của mảng ban đầu và mỗi phần tử thuộc đúng một phần. Nói cách khác, nếu phần thứ nhất có a phần tử, phần thứ hai có b phần tử và phần thứ ba có c phần tử (a+b+c=n, a,b,c≥0) thì:

sum1=∑1≤i≤adi,sum2=∑a+1≤i≤a+bdi,sum3=∑a+b+1≤i≤ndi.

Tổng của một đoạn rỗng bằng 0.

Trong tất cả các cách chia thỏa mãn sum1=sum3, hãy tìm giá trị sum1 lớn nhất.

Luôn tồn tại ít nhất một cách chia hợp lệ: chọn a=c=0 và b=n, khi đó sum1=sum3=0.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số phần tử của mảng.
  • Dòng thứ hai chứa n số nguyên d1,d2,…,dn.

Dữ liệu ra

Một số nguyên duy nhất là giá trị sum1 lớn nhất có thể, với điều kiện sum1=sum3.

Ràng buộc

  • 1≤n≤2·105
  • 1≤di≤109

Ví dụ

Input Output Giải thích
5
1 3 1 1 4
5 Cách chia duy nhất đạt cực đại: [1,3,1], [ ], [1,4]. Cả hai bên đều có tổng 5, phần giữa rỗng.
5
1 3 2 1 4
4 Cách duy nhất cho sum1=4 là [1,3], [2,1], [4].
3
4 1 2
0 Không có cách chia nào với sum1=sum3>0, nên chỉ còn [ ], [4,1,2], [ ] cho kết quả 0.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0