Pagini recente » Cod sursa (job #2121753) | Cod sursa (job #1860012) | Cod sursa (job #166833) | Cod sursa (job #2185591) | Cod sursa (job #132213)
Cod sursa(job #132213)
#include<stdio.h>
#define nmax 100002
#define max(a,b) ((a)>(b)?(a):(b))
long d1[nmax],d2[nmax];
int main()
{
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
int n;
scanf("%d",&n);
long aux1,aux2=0;
long solfin;
int i;
for(i=1; i<=n; ++i){
scanf("%ld",&aux1);
d1[i]=aux1+aux2;
aux2=aux1;
}
d1[1]+=aux1;
d2[2]=d1[2];
for(i=3; i<n; ++i)
{
if( d2[i-3]+d1[i] > d2[i-1])
d2[i]=d2[i-3]+d1[i];
else
d2[i]=d2[i-1];
}
solfin=d2[n-1];
d2[1]=0;
d2[2]=0;
d2[3]=d1[3];
for(i=3; i<=n; ++i)
{
if( d2[i-3]+d1[i] > d2[i-1])
d2[i]=d2[i-3]+d1[i];
else
d2[i]=d2[i-1];
}
solfin=max(solfin,d2[n]);
d2[1]=0;
d2[2]=0;
d2[3]=0;
n-=2;
for(i=4; i<=n; ++i)
{
if( d2[i-3]+d1[i] > d2[i-1])
d2[i]=d2[i-3]+d1[i];
else
d2[i]=d2[i-1];
}
solfin=max(solfin,d2[n]+d1[1]);
printf("%ld\n",solfin);
return 0;
}