PTQMSEQ - Dãy số vòng tròn

Tác giả: ladpro98

Ngôn ngữ: Pascal

program ptqmseq;
uses    math;
const   fi='';
var     n:longint;
        a,b,min1,max1:array[0..1100000] of int64;
        inp:text;
        res,min2:int64;
procedure input;
var     i:longint;
begin
        assign(inp,fi);
        reset(inp);
        readln(inp,n);
        for i:=1 to n do
        read(inp,a[i]);
        close(inp);

        for i:=2 to n do
        begin
                inc(a[i],a[i-1]);
        end;
        min1[1]:=a[1];
        for i:=2 to n do
        begin
                min1[i]:=min(a[i],min1[i-1]);
        end;
        //min2:=a[2];
        //for i:=3 to n-1 do min2:=min(min2,a[i]);
        max1[n]:=a[n]-a[n-1];
        for i:=n-1 downto 1 do
        begin
                max1[i]:=max(a[n]-a[i-1],max1[i+1]);
        end;
end;

procedure process;
var     i:longint;
begin
        for i:=1 to n-1 do
        begin
                res:=max(res,a[i]+max1[i+2]);
                res:=max(res,a[i]-min1[i-1]);
        end;
        res:=max(res,a[n]-min1[1]);
end;

begin
        input;;
        res:=low(int64);
        process;
        write(res);
end.

Download