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