Cod sursa(job #865762)

Utilizator superman_01Avramescu Cristian superman_01 Data 26 ianuarie 2013 22:30:11
Problema Oo Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<cstdio>
#include<cassert>
#define Nmax 100005

FILE *f=fopen("oo.in","r");
FILE *g=fopen("oo.out","w");
using namespace std;

int n,v[Nmax],Smax,Q[Nmax];
void read()
{
	fscanf(f,"%d",&n);
	int i;
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&v[i]);
	v[n+1]=v[1];
}
int max(int i,int j)
{
	if(i>j)
		return i;
	else return j;
}
void solve(int left,int right)
{
	int i;
	Q[left+2]=v[left]+v[left+1];
	
	for(i=left+3;i<=right;i++)
		{
			Q[i]=max(Q[i-1],Q[i-3]+v[i]+v[i+1]);
	        Smax=max(Smax,Q[i]);
	}
}
void write()
{
	fprintf(g,"%d",Smax);
}
int main()
{
	read();
	solve(1,n-1);
	solve(2,n);
	solve(3,n+1);
	write();
	return 0;
}