Cod sursa(job #423741)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 24 martie 2010 11:14:32
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>
#define DIM 100001

FILE *f1 = fopen("oo.in","r");
FILE *f2 = fopen("oo.out","w");

int s[DIM];
int v[DIM];

int n;
int i;
int max;

int main(){
	
	fscanf(f1,"%d",&n);
	for(i=1; i<=n; i++)
		fscanf(f1,"%d",&v[i]);
	
	int x1,x2;
	
	s[0] = 0;
	s[1] = 0;
	s[2] = v[2] + v[1];
	
	if(max < s[2])
		max = s[2];	
	
	for(i=3; i<=n-1; i++){
		x1 = v[i] + v[i - 1] + s[i - 3];
		x2 = s[i - 1];
		
		s[i] = x1>x2?x1:x2;
		if(max < s[i])
			max = s[i];	
	}
	
	s[0] = 0;
	s[1] = 0;
	s[2] = 0;
	s[3] = v[3] + v[2];
	
	if(max < s[3])
		max = s[3];	
	
	for(i=3; i<=n; i++){
		x1 = v[i] + v[i - 1] + s[i - 3];
		x2 = s[i - 1];
		
		s[i] = x1>x2?x1:x2;
		if(max < s[i])
			max = s[i];			
	}
	
	s[0] = 0;
	s[1] = v[1] + v[n];
	if(max < s[1])
		max = s[1];	
	
	x1 = v[2] + v[1];
	x2 = s[2 - 1];

	s[2] = x1>x2?x1:x2;
	if(max < s[2])
		max = s[2];	
	
	for(i=3; i<=n-2; i++){
		x1 = v[i] + v[i - 1] + s[i - 3];
		x2 = s[i - 1];
		
		s[i] = x1>x2?x1:x2;
		if(max < s[i])
			max = s[i];		
	}
	
	fprintf(f2,"%d",max);
	
	fclose(f1);
	fclose(f2);
	
	return 0;
}