Cod sursa(job #92620)

Utilizator c_sebiSebastian Crisan c_sebi Data 16 octombrie 2007 08:29:07
Problema Oo Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>

int main(){
	int i, n, a[100001], smax[100001], mm;
	a[0]=0;
	FILE *f = fopen("oo.in", "r");
	fscanf(f, "%d", &n);
	for(i=1; i<=n; ++i) fscanf(f, "%d", &a[i]);
	fclose(f);

	//case 1
	smax[0]=smax[1]=0; smax[2]=a[1]+a[2];
	for(i=3; i<n; ++i){
		smax[i]=smax[i-1];
		if(a[i]+a[i-1]+smax[i-3] > smax[i])
			smax[i] = a[i] + a[i-1] + smax[i-3];
	}
	mm=smax[n-1];

	//case 2
	smax[0]=smax[1]=smax[2]=0; smax[3]=a[2]+a[3];
	for(i=4; i<=n; ++i){
		smax[i]=smax[i-1];
		if(a[i]+a[i-1]+smax[i-3] > smax[i])
		smax[i] = a[i] + a[i-1] + smax[i-3];
	}
	if(mm<smax[n]) mm=smax[n];

	//case 3
	smax[n]=smax[0]; smax[1]=a[1]+a[n];
	for(i=2; i<n; ++i){
		smax[i]=smax[i-1];
		if(a[i]+a[i-1]+smax[i-3] > smax[i])
		smax[i] = a[i] + a[i-1] + smax[i-3];
	}
	if(mm<smax[n]) mm=smax[n];

	FILE *g=fopen("oo.out", "w");
	fprintf(g, "%d\n", mm);
	fclose(g);
	return 0;
}