Cho một dãy gồm N số nguyên a1, a2,…, aN (N<250). Một đoạn con của dãy từ phần tử thứ p đến phần tử thứ q gồm liên tiếp các số ap, …, ap (1<=p<=q<=N). Hãy viết chương trình tìm một đoạn con có tổng lớn nhất của dãy N số đã cho. Dữ liệu vào là file DOANCON.INP có cấu trúc như sau: - Dòng thứ nhất chứa số nguyên N. - Dòng tiếp theo chứa N số nguyên a1, a2, …, aN; các số kề nhau cách nhau một khoảng trắng. Dữ liệu ra là file DOANCON.OUT có cấu trúc như sau : - Dòng thứ nhất chứa một số là tổng các phần tử của đoạn con tìm được. - Dòng thứ 2 gồm hai số nguyên dương p, q chỉ vị trí bắt đầu và vị trí kết thúc của đoạn con trong dãy. Ví dụ : DOANCON.INP DOANCON.OUT Giải thích 10 15 đoạn con 1 -2 -3 5 7 -1 4 -2 -4 1 4 7 5 7- 1 4 PASCAL giải thích ý tưởng ko cần dùng file
1 câu trả lời
uses crt;
var max,t:int64;
i,n,res1,res2,v1,v2,a:longint;
begin
clrscr;
res1:=1;v1:=1;
readln(n);
max:=-trunc(1e12);
for i:=1 to n do
begin
read(a);
if a <= t+a then
begin
v2:=i;
t:=t+a;
end
else
begin
v1:=i;
v2:=i;
t:=a;
end;
if t > max then
begin
res1:=v1;
res2:=v2;
max:=t;
// writeln(res1,' ',res2,' ',t);
end;
end;
writeln(res1,' ',res2);
readln;readln;
end.
Câu hỏi trong lớp
Xem thêm