Cod sursa(job #380578)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 6 ianuarie 2010 19:01:24
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

int a[100100],x[100100],x1[100100],x2[100100],i,j,n,rez;

int main()
{ 
	freopen("oo.in","r",stdin);
	freopen("oo.out","w",stdout);
	
	scanf("%d",&n);
	
	for(i=1;i<=n;++i) scanf("%d",&a[i]);
	
	x[2]=a[1]+a[2];
	x[3]=x[2];
	x[4]=x[2];
	if(x[2]>rez) rez=x[2];
	
	for(i=5;i<n;++i) { x[i]=max(x[i-1],x[i-3]+a[i-1]+a[i]);
	                   if(x[i]>rez) rez=x[i];
	                 }
	
	x1[3]=a[2]+a[3];
	x1[4]=x1[5]=x1[3];
	if(x1[3]>rez) rez=x1[3];
	
	for(i=6;i<=n;++i) { x1[i]=max(x1[i-1],x1[i-3]+a[i-1]+a[i]);
	                    if(x1[i]>rez) rez=x1[i];
	                  }
	
	x2[1]=a[1]+a[n];
	x2[2]=x2[3]=x2[1];
	if(x2[1]>rez) rez=x2[1];
	
	for(i=4;i<n-1;++i) { x2[i]=max(x2[i-1],x2[i-3]+a[i-1]+a[i]);
	                     if(x2[i]>rez) rez=x2[i];
	                   }
	
	printf("%d\n",rez);	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}