Pagini recente » Cod sursa (job #405456) | Cod sursa (job #1254847) | Cod sursa (job #1904982) | Cod sursa (job #1432946) | Cod sursa (job #35577)
Cod sursa(job #35577)
#include <stdlib.h>
#include <stdio.h>
#define Nmax 100000
long N,b0[Nmax],b1[Nmax],b2[Nmax],i,max;
int x[Nmax];
int main()
{
freopen("oo.in","r",stdin);
scanf("%d\n",&N);
for (i=0;i<N;++i)
scanf("%d",&x[i]);
fclose(stdin);
freopen("oo.out","w",stdout);
if (N==2)
{
printf("%d",x[0]+x[1]);
fclose(stdout);
exit(0);
}
b0[1]=x[0]+x[1];
b0[2]=0;
b1[1]=0;
b1[2]=x[1]+x[2];
b0[3]=0;
b0[4]=b0[1]+x[3]+x[4];
b1[3]=x[2]+x[3];
b1[4]=x[3]+x[4];
b2[0]=x[N-1]+x[0];
b2[1]=0;
b2[2]=0;
b2[3]=b2[0]+x[2]+x[3];
b2[4]=b2[0]+x[3]+x[4];
for (i=5;i<N;++i)
{
b0[i]=b0[i-3];
if (b0[i-4]>b0[i]) b0[i]=b0[i-4];
if (b0[i-5]>b0[i]) b0[i]=b0[i-5];
b0[i]+=x[i-1]+x[i];
b1[i]=b1[i-3];
if (b1[i-4]>b1[i]) b1[i]=b1[i-4];
if (b1[i-5]>b1[i]) b1[i]=b1[i-5];
b1[i]+=x[i-1]+x[i];
b2[i]=b2[i-3];
if (b2[i-4]>b2[i]) b2[i]=b2[i-4];
if (b2[i-5]>b2[i]) b2[i]=b2[i-5];
b2[i]+=x[i-1]+x[i];
}
b0[N-1]=0;
b2[N-1]=0;
b2[N-1]=0;
b2[N-2]=0;
for (i=0;i<N;++i)
{
if (b0[i]>max) max=b0[i];
if (b1[i]>max) max=b1[i];
}
printf("%ld",max);
fclose(stdout);
return 0;
}