Pagini recente » Cod sursa (job #2726812) | Cod sursa (job #3270328) | Cod sursa (job #1039752) | Cod sursa (job #1346512) | Cod sursa (job #935604)
Cod sursa(job #935604)
#include <stdio.h>
#define fin "oo.in"
#define fout "oo.out"
#define Nmax 100002
int N,ret,v[Nmax],best[Nmax];
inline void swap(int &a,int &b) { int aux; aux=a; a=b; b=aux; }
int go() {
int i,max=0;
best[1]=0;
best[2]=v[2]+v[1];
best[3]=v[3]+v[2];
for (i=4;i<N;++i) {
best[i]=max+v[i]+v[i-1];
if (best[i-2]>max) max=best[i-2];
}
max=0;
for (i=1;i<N;++i) {
//fprintf(stderr,"%i ",best[i]);
if (best[i]>max) max=best[i];
}
//fprintf(stderr,"\n");
return max;
}
int main() {
int i,j,tmp;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%i",&N);
for (i=1;i<=N;++i)
scanf("%i",&v[i]);
tmp=go();
if (tmp>ret) ret=tmp;
for (i=1;i<=N/2;++i) swap(v[i],v[N-i+1]);
tmp=go();
if (tmp>ret) ret=tmp;
for (i=1;i<=N/2;++i) swap(v[i],v[N-i+1]);
for (i=N+1;i>1;--i) v[i]=v[i-1];
v[1]=v[N+1];
tmp=go();
if (tmp>ret) ret=tmp;
printf("%i\n",ret);
fclose(stdin); fclose(stdout);
return 0;
}