trang chủ / bài tập / foursegs

Bốn Đoạn

Đề bài

Mô tả

Cho một mảng gồm n số nguyên. Với hai chỉ số lr thỏa 0lrn, ký hiệu sum(l,r) là tổng các phần tử ở vị trí từ l đến r1 (tính phần tử thứ l, không tính phần tử thứ r). Các vị trí trong mảng được đánh số từ 0. Khi l=r thì sum(l,r)=0.

Ví dụ, nếu a=[5,3,9,4] thì sum(0,1)=5, sum(0,2)=2, sum(1,4)=16.

Hãy chọn ba chỉ số phân cách delim0,delim1,delim2 thỏa 0delim0delim1delim2n sao cho giá trị

res=sum(0,delim0)sum(delim0,delim1)+sum(delim1,delim2)sum(delim2,n)

đạt giá trị lớn nhất. Lưu ý một số đoạn có thể rỗng (khi hai đầu mút bằng nhau).

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n.
  • Dòng thứ hai chứa n số nguyên a0,a1,,an1.

Dữ liệu ra

In ra ba chỉ số delim0,delim1,delim2 làm cho res đạt giá trị lớn nhất. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1n5000
  • 109ai109

Ví dụ

Input Output Giải thích
3
-1 2 3
0 1 3 res=sum(0,0)sum(0,1)+sum(1,3)sum(3,3)=0(1)+50=6, là giá trị lớn nhất.
4
0 0 -1 0
0 0 0 res=00+0sum(0,4)=(1)=1. Mọi đoạn đầu đều rỗng, chỉ giữ lại phần sum(delim2,n) để loại bỏ giá trị âm 1.
1
10000
0 0 1 res=00+sum(0,1)sum(1,1)=10000. Đáp án 1 1 1 cũng cho cùng giá trị nên được chấp nhận.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0