Pagini recente » Cod sursa (job #1961628) | Cod sursa (job #1182487) | Cod sursa (job #1967068) | Cod sursa (job #2761640) | Cod sursa (job #822879)
Cod sursa(job #822879)
#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] = V[2];
V[4] = V[2];
for (i=5;i<N;i++)
V[i] = maxim(V[i-1], V[i-3] + C[i-1] + C[i]);
Max = V[N-1];
V[1] = 0;
V[2] = 0;
V[3] = C[2] + C[3];
V[4] = maxim(C[2] + C[3], C[3]+C[4]);
for (i=5;i<=N;i++)
V[i] = maxim(V[i-1], C[i-1] + C[i] + V[i-3]);
Max = maxim(Max, V[N]);
C[N+1] = C[1];
for (i=1;i<=N;i++)
C[i] = C[i+1];
V[1] = 0;
V[2] = 0;
V[3] = C[2] + C[3];
V[4] = maxim(C[2] + C[3], C[3]+C[4]);
for (i=5;i<=N;i++)
V[i] = maxim(V[i-1], C[i-1] + C[i] + V[i-3]);
Max = maxim(Max, V[N]);
fprintf(g,"%d",Max);
return 0;
}