Pagini recente » Cod sursa (job #2887403) | Cod sursa (job #784951) | Cod sursa (job #1798145) | Cod sursa (job #280827) | Cod sursa (job #92630)
Cod sursa(job #92630)
#include <stdio.h>
int main(){
int i, n, a[100001], smax[100001];
long long mm;
a[0]=0;
FILE *f = fopen("oo.in", "r");
fscanf(f, "%d", &n);
for(i=1; i<=n; ++i) fscanf(f, "%d", &a[i]);
fclose(f);
//case 1
smax[0]; smax[1]=0; smax[2]=a[1]+a[2];
for(i=3; i<n; ++i){
smax[i]=smax[i-1];
if(a[i]+a[i-1]+smax[i-3] > smax[i])
smax[i] = a[i] + a[i-1] + smax[i-3];
}
if (n==2) mm=smax[n];
else mm=smax[n-1];
//case 2
smax[0]=smax[1]=smax[2]=0; smax[3]=a[2]+a[3];
for(i=4; i<=n; ++i){
smax[i]=smax[i-1];
if(a[i]+a[i-1]+smax[i-3] > smax[i])
smax[i] = a[i] + a[i-1] + smax[i-3];
}
if(mm<smax[n]) mm=smax[n];
//case 3
a[0]=a[n];
smax[0]=0; smax[1]=a[1]+a[0];
smax[2]=smax[1];
for(i=3; i<n; ++i){
smax[i]=smax[i-1];
if(a[i]+a[i-1]+smax[i-3] > smax[i])
smax[i] = a[i] + a[i-1] + smax[i-3];
}
if(mm<smax[n-1]) mm=smax[n-1];
FILE *g=fopen("oo.out", "w");
fprintf(g, "%lld\n", mm);
fclose(g);
return 0;
}