Cod sursa(job #590179)

Utilizator tudorsTudor Siminic tudors Data 15 mai 2011 20:19:14
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#define N 100005
using namespace std;
int n,REZ,A[4][N],X[N];
FILE *f,*g;
void citire()
{
	int i;
	fscanf(f,"%d",&n);
	for (i=1;i<=n;++i)
		fscanf(f,"%d",&X[i]);
	X[0]=X[n];
}
int maxim(int a, int b)
{
	if (a>=b)
		return a;
	else
		return b;
}
void solve()
{
	int i,j,x;
	x=n-3;
	REZ=0;
	for (i=1;i<=3;++i)
	{
		A[i][i+1]=A[i][i]=X[i]+X[i-1];
		for (j=i+2;j<=x+i;++j)
			A[i][j]=maxim(A[i][j-1],A[i][j-3]+X[j]+X[j-1]);
		if (A[i][x+i]>REZ)
			REZ=A[i][x+i];
	}
	fprintf(g,"%d",REZ);
}
int main()
{
	f=fopen("oo.in","r");
	g=fopen("oo.out","w");
	citire();
	if (n==2)
	{
		fprintf(g,"%d",X[1]+X[2]);
		fclose(f);
		fclose(g);
		return 0;
	}
	solve();
	fclose(f);
	fclose(g);
	return 0;
}