Cod sursa(job #152055)

Utilizator dobreDobre Catalin Andrei dobre Data 8 martie 2008 23:24:51
Problema Oo Scor 70
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.02 kb
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.