Pagini recente » Cod sursa (job #45234) | Cod sursa (job #2504526) | Cod sursa (job #2161417) | Cod sursa (job #1961707) | Cod sursa (job #849590)
Cod sursa(job #849590)
#include <cstdio>
#include <cassert>
const int dim=100005;
int main()
{
int n=0,i=0,max=0,v[dim],cmb[dim];
cmb[0]=cmb[1]=0;
assert(freopen("oo.in","r",stdin));
assert(freopen("oo.out","w",stdout));
assert(scanf("%d",&n));
for (i=1; i<n+1; ++i)
assert(scanf("%d",&v[i]));
v[n+1]=v[1];
cmb[2]=v[1]+v[2];
i=3;
while (i<n)
{
if (cmb[i-1]>v[i-1]+v[i]+cmb[i-3])
cmb[i]=cmb[i-1];
else
cmb[i]=v[i-1]+v[i]+cmb[i-3];
++i;
}
max=cmb[n-1];
cmb[2]=0;
cmb[3]=v[2]+v[3];
i=4;
while (i<n+1)
{
if (cmb[i-1]>v[i-1]+v[i]+cmb[i-3])
cmb[i]=cmb[i-1];
else
cmb[i]=v[i-1]+v[i]+cmb[i-3];
++i;
}
if (cmb[n]>max)
max=cmb[n];
cmb[3]=0;
cmb[4]=v[3]+v[4];
i=5;
while (i<n+2)
{
if (cmb[i-1]>v[i-1]+v[i]+cmb[i-3])
cmb[i]=cmb[i-1];
else
cmb[i]=v[i-1]+v[i]+cmb[i-3];
++i;
}
if (cmb[n+1]>max)
max=cmb[n+1];
assert(printf("%d\n",max));
return 0;
}