Cod sursa(job #822857)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 24 noiembrie 2012 09:29:29
Problema Oo Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 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] = 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;
}