Pagini recente » Cod sursa (job #22902) | Cod sursa (job #2606142) | Cod sursa (job #2973471) | Cod sursa (job #1757877) | Cod sursa (job #821171)
Cod sursa(job #821171)
#include <stdio.h>
#define maxim(a,b) (a>b?a:b)
FILE *f=fopen("oo.in","r");
FILE *g=fopen("oo.out","w");
int N,V[1000010],C[1000010];
int Max=0;
int main(void){
register int i,j;
fscanf(f,"%d",&N);
for(i=1;i<=N;i++)
fscanf(f,"%d",&C[i]);
//I:Luam din primele doua cutii
for(i=2;i<=N;i++){
V[i]=maxim(V[i-1],C[i-1]+C[i]+V[i-3]);
}
if(Max<V[N-1])
Max=V[N-1];
//II:Nu luam din prima cutie
int x=C[N];
V[2]=0;
for(i=3;i<=N;i++){
V[i]=0;
V[i]=maxim(V[i-1],C[i]+C[i-1]+V[i-3]);
C[i-1]=C[i-2];
}
C[1]=x;
if(Max<V[N])
Max=V[N];
//III:Luam din prima si ultima cutie
for(i=2;i<=N;i++){
V[i]=0;
V[i]=maxim(V[i-1],C[i-1]+C[i]+V[i-3]);
}
if(Max<V[N-1])
Max=V[N-1];
fprintf(g,"%d",Max);
return 0;
}