Cod sursa(job #303725)
Utilizator | Voroneanu Radu Stefan radu_voroneanu | Data | 10 aprilie 2009 11:45:17 |
---|---|---|---|
Problema | Oo | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.96 kb |
#include <stdio.h>
int n,i,j,k,rez;
int oo[100000], a[100000];
int max(int x, int y)
{
if (x>y) return x;
else return y;
}
int main()
{
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
scanf("%d",&n);
for (i=0; i<n; ++i)
scanf("%d",&oo[i]);
rez=0;
if (n==2) rez=oo[0]+oo[1];
else
for (k=0; k<2; k++)
{
a[(k+1)%n]=a[k]=0;
a[(k+2)%n]=oo[(k+1)%n]+oo[(k+2)%n];
i=(k+3)%n;
while (i!=k)
{
a[i]=max(a[(i+n-1)%n],a[(i+n-3)%n]+oo[(i+n-1)%n]+oo[i]);
i=(i+1)%n;
}
rez=max(rez,a[(k+n-1)%n]);
}
printf("%d",rez);
fclose(stdin); fclose(stdout);
return 0;
}