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.