Cod sursa(job #373867)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 15 decembrie 2009 12:25:23
Problema Oo Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

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

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