Cod sursa(job #303747)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 10 aprilie 2009 12:12:08
Problema Oo Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

int n,oo[200000],i,j,k;
long a[200000],rez;

long max(long a, long b)
{
        if (a>b) return a;
        else return b;
}

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]);
        if (n==2) rez=oo[0]+oo[1];
        else
                for (k=0; k<2; k=(k+1)%n)
                {
                        a[k]=0;
                        a[(k+1)%n]=0;
                        a[(k+2)%n]=oo[(k+1)%n]+oo[(k+2)%n];
                        for (i=(k+3)%n; i!=k; i=(i+1)%n)
                                a[i]=max(a[(i-1+n)%n],a[(i-3+n)%n]+oo[(i-1+n)%n]+oo[i]);
                        rez=max(rez,a[(k-1+n)%n]);
                }
        printf("%ld\n",rez);
        fclose(stdin); fclose(stdout);
        return 0;
}