Cod sursa(job #681092)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 16 februarie 2012 15:32:00
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
/*#include<iostream>
#include<fstream>
using namespace std;
int a[100005],v[100005],sol;
int max(int a, int b)
{
	if (a>b)
		return a;
	return b;
}
void rez(int s, int f)
{
	int i;
	v[s-2]=0;
	v[s-1]=a[s-1]+a[s-2];
	for (i=s; i<=f; i++)
	{
		v[i]=max(v[i-1], v[i-3]+a[i]+a[i-1]);
		sol=max (s, v[i]);
	}
}
int main(void)
{
	int n,i;
	fstream f,g;
	f.open("oo.in",ios::in);
	g.open("oo.out",ios::out);
	f>>n;
	for (i=1;i<=n;i++)
		f>>a[i];
	a[n+1]=a[1];
	rez(3,n-1);
	rez(4,n);
	rez(5,n+1);
	g<<sol;
	
}*/
#include<iostream>
#include<fstream>
using namespace std;

ifstream f("oo.in");
ofstream g("oo.out");

int a[100003],v[100003],s;

int max(int c, int d)
{
	if(c>d) return c;
	else
		return d;
}

void rez(int x, int y)
{
	v[x-2]=0;
	v[x-1]=a[x-1]+a[x-2];
	for(int i=x;i<=y;i++)
	{
		v[i]=max(v[i-1], v[i-3]+a[i]+a[i-1]);
		s=max(s,v[i]);
	}
}
	
int main()
{
	int i,n;
	f>>n;
	for(i=1;i<=n;i++)
		f>>a[i];
	a[n+1]=a[1];
	
	rez(3,n-1);
	rez(4,n);
	rez(5,n+1);
	g<<s<<'\n';
	
	return 0;
}