Cod sursa(job #772355)

Utilizator batistaUPB-Oprea-Cosmin-Dumitru batista Data 29 iulie 2012 12:32:17
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
#define max(a,b) (a>b)?a:b
using namespace std;
int n,i,v[100005],sol[100005],sol2[100005],sol3[100005],k,k2,uz[100005],maxx;
int main()
{
	ifstream f("oo.in");ofstream g("oo.out");
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	for(i=3;i<=n;i++)
	{
		k=i-3;
		k2=i-1;
		if(k<1)k=n+k;
		if(k2<1)k2=n+k2;
		sol[i]=max(sol[k]+v[i]+v[k2],sol[i-1]);
	}
	for(i=1;i<=n-2;i++)
	{
		k=i-3;
		k2=i-1;
		if(k<1)k=n+k;
		if(k2<1)k2=n+k2;
		sol2[i]=max(sol2[k]+v[i]+v[k2],sol2[i-1]);
	}
	for(i=2;i<=n-1;i++)
	{
		k=i-3;
		k2=i-1;
		if(k<1)k=n+k;
		if(k2<1)k2=n+k2;
		sol3[i]=max(sol3[k]+v[i]+v[k2],sol3[i-1]);
	}
	maxx=sol[n];
	if(sol2[n-2]>maxx)maxx=sol2[n-2];
	if(sol3[n-1]>maxx)maxx=sol3[n-1];
	g<<maxx;
	f.close();g.close();
return 0;}