Thứ Ba, 3 tháng 5, 2022

PS PASCAL

var n,i,j,x,k,y,max:longint;
    a,f,min:array[0..100001] of int64;
procedure nhap;
begin
    readln(n);
    for i:=1 to n do
           read(a[i]);
end;
procedure tinh_f;
begin
    f[0]:=0;
    for i:=1 to n do
           f[i]:=f[i-1]+a[i];
       end;
end;
procedure tinh_min;
begin
    min[0]:=0;
    for i:=1 to n do
           If f[i]<f[min[i-1]] then min[i]:=i
           else min[i]:=min[i-1];
end;
procedure giai;
begin
    i:=min[n];j:=n;
    repeat
           while (i<j) and (f[j]-f[i]<=0) do dec(j);
           IF j-i>max then
          begin
              max:=j-i;
              x:=i;
              y:=j;
          end;
           IF i=0 then break;
           i:=min[i-1];
    until false;
    write(x+1,' ',y);
end;
begin
    assign(input,'PS.inp');reset(input);
    assign(output,'PS.out');rewrite(output);
    nhap;
    tinh_f;
    tinh_min;
    giai;
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.