Pagini recente » Rating Vlad Prismareanu (Vlad_pris) | Cod sursa (job #777618) | Cod sursa (job #2271156) | Cod sursa (job #822857)
Cod sursa(job #822857)
#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
V[1] = 0;
V[2] = C[1] + C[2];
V[3] = C[1] + C[2];
for(i=4;i<=N-1;i++){
V[i]=maxim(V[i-1],C[i-1]+C[i]+V[i-3]);
}
Max = V[N-1];
//II:Nu luam din prima cutie
V[1] = 0;
V[2] = 0;
V[3] = C[2] + C[3];
for(i=4;i<=N;i++){
V[i]=maxim(V[i-1],C[i]+C[i-1]+V[i-3]);
}
Max = maxim(V[N], Max);
int x=C[N];
for(i=N+1;i<=2;i++)
C[i]=C[i-1];
C[1]=x;
V[1] = 0;
V[2] = C[1] + C[2];
V[3] = C[1] + C[2];
for(i=4;i<=N-1;i++){
V[i]=maxim(V[i-1],C[i-1]+C[i]+V[i-3]);
}
Max = maxim(V[N-1], Max);
fprintf(g,"%d",Max);
return 0;
}