Cod sursa(job #822879)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 24 noiembrie 2012 10:07:08
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#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;
}