Cod sursa(job #949587)

Utilizator MaddoxMihalcea-Simoiu Theodor Maddox Data 14 mai 2013 11:54:59
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
/*#include <cstdio>

using namespace std;
int maxi(int a, int b){
 if(a>b) return a;
  else return b;
}
int n,x,a[100001],d[100001],i;
int main()
{
    freopen("oo.in","r",stdin);
    freopen("oo.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;++i)
     scanf("%d",&a[i]);
    d[1]=0;
    d[2]=0;
    d[3]=a[2]+a[3];
    for(i=4;i<=n;++i)
     d[i]=maxi(d[i-1],a[i]+a[i-1]+d[i-3]);
    x=d[n];
    printf("%d",x);


    return 0;
}
*/
#include <cstdio>

using namespace std;
int maxi(int a,int b){
 if(a>b) return a;
  else return b;
}
int n,oo[100001],i,j,k;
long rez,a[100001];
int main(){

 freopen("oo.in","r",stdin);
 freopen("oo.out","w",stdout);
 scanf("%d",&n);
 for(i=1;i<=n;++i)
  scanf("%d",&oo[i]);
 if(n==2) rez=oo[0]+oo[1];
 else
 for(k=0;k<3;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]=maxi(a[(i-1+n)%n],a[(i-3+n)%n]+oo[(i-1+n)%n]+oo[i]);
   rez=maxi(rez,a[(k-1+n)%n]);
 }
 printf("%ld\n",rez);
 return 0;
}