Pagini recente » Cod sursa (job #2953544) | Cod sursa (job #223433) | Cod sursa (job #2058144) | Cod sursa (job #2523184) | Cod sursa (job #374803)
Cod sursa(job #374803)
#include <stdio.h>
int v[1001],t[1001],s[1001],u[1001];
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[3]=v[2]+v[3];
s[6]=s[3]+v[5]+v[6];
s[7]=s[3]+v[7]+v[6];
s[8]=s[3]+v[7]+v[8];
for (i=9;i<n+1;i++)
{
s[i]=s[i-3]+v[i-1]+v[i];
if (s[i-4]+v[i]+v[i-1]>s[i]) s[i]=s[i-4]+v[i]+v[i-1];
if (s[i-5]+v[i]+v[i-1]>s[i]) s[i]=s[i-5]+v[i]+v[i-1];
}
max=s[n];
if (s[n-1]>max) max=s[n-1];
if (s[n-2]>max) max=s[n-2];
t[2]=v[1]+v[2];
t[5]=t[2]+v[5]+v[4];
t[6]=t[2]+v[5]+v[6];
t[7]=t[2]+v[7]+v[6];
for (i=8;i<n;i++)
{
t[i]=t[i-3]+v[i-1]+v[i];
if (t[i-4]+v[i]+v[i-1]>t[i]) t[i]=t[i-4]+v[i]+v[i-1];
if (t[i-5]+v[i]+v[i-1]>t[i]) t[i]=t[i-5]+v[i]+v[i-1];
}
if (t[n-1]>max) max=t[n-1];
if (t[n-2]>max) max=t[n-2];
if (t[n-3]>max) max=t[n-3];
u[1]=v[n]+v[1];
u[4]=u[1]+v[3]+v[4];
u[5]=u[1]+v[5]+v[4];
u[6]=u[1]+v[5]+v[6];
for (i=7;i<n-1;i++)
{
u[i]=u[i-3]+v[i-1]+v[i];
if (u[i-4]+v[i]+v[i-1]>u[i]) u[i]=u[i-4]+v[i]+v[i-1];
if (u[i-5]+v[i]+v[i-1]>u[i]) u[i]=u[i-5]+v[i]+v[i-1];
}
if (u[n-1]>max) max=u[n-2];
if (u[n-3]>max) max=t[n-3];
if (u[n-4]>max) max=t[n-4];
printf("%d",max);
return 0;
}