Cod sursa(job #821171)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 21 noiembrie 2012 20:26:21
Problema Oo Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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
	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;
}