Pagini recente » Cod sursa (job #3142303) | Cod sursa (job #2865653) | Cod sursa (job #1149500) | Cod sursa (job #76319) | Cod sursa (job #132199)
Cod sursa(job #132199)
#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[1]=d1[1];
for(i=4; i<n; ++i)
{
if( d2[i-2]+d1[i] > d2[i-1])
d2[i]=d2[i-2]+d1[i];
else
d2[i]=d2[i-1];
}
solfin=d2[n-1];
/*
for(i=1; i<=n; ++i)
printf("%d ",d2[i]);*/
d2[1]=0;
d2[2]=d2[3]=d2[4]=d1[2];
for(i=5; i<n; ++i)
{
if( d2[i-3]+d1[i] > d2[i-2])
d2[i]=d2[i-3]+d1[i];
else
d2[i]=d2[i-2];
}
solfin=max(solfin,d2[n-1]);
d2[1]=0;
d2[2]=0;
d2[3]=d1[3];
n-=2;
for(i=4; i<=n; ++i)
{
if( d2[i-2]+d1[i] > d2[i-1])
d2[i]=d2[i-2]+d1[i];
else
d2[i]=d2[i-1];
}
solfin=max(solfin,d2[n-1]);
printf("%ld",solfin);
return 0;
}