Pagini recente » Cod sursa (job #152800) | Monitorul de evaluare | Cod sursa (job #1504223) | Cod sursa (job #1808263) | Cod sursa (job #152055)
Cod sursa(job #152055)
program oo;
var v:array[1..10000]of byte;
s:array[-1..10000]of longint;
i,j,n:integer;
m:longint;
f:text;
procedure citire;
begin
assign(f,'oo.in');reset(f);
readln(f,n);
for i:=1 to n do read(f,v[i]);
close(f);
end;
function maxim(a,b,c:longint):longint;
var max:longint;
begin
max:=(a+b+abs(a-b))div 2;
max:=(max+c+abs(max-c))div 2;
maxim:=max;
end;
procedure solve;
var i,k:integer;
max:longint;
begin
v[n+1]:=v[1];
v[n+2]:=v[2];
m:=0;
if n=2 then m:=v[1]+v[2];
if n=3 then m:=maxim(v[1]+v[2],v[2]+v[3],0);
if n>2 then
for k:=0 to 2 do begin
s[-1+k]:=0;
s[0+k]:=0;
s[1+k]:=v[1+k]+v[2+k];
s[2+k]:=v[2+k]+v[3+k];
s[3+k]:=v[3]+v[4];
for i:=4+k to n+k-2 do
s[i]:=v[i]+v[i+1]+maxim(s[i-3],s[i-4],s[i-5]);
max:=maxim(s[n+k-2],s[n+k-3],s[n+k-4]);
m:=maxim(max,m,0);
fillchar(s,sizeof(s),0);
end;
end;
procedure afis;
begin
assign(f,'oo.out');rewrite(f);
writeln(f,m);
close(f);
end;
begin
citire;
solve;
afis;
end.