Pagini recente » Cod sursa (job #2050401) | Cod sursa (job #1185031) | Cod sursa (job #1037814) | Cod sursa (job #3122022) | Cod sursa (job #97964)
Cod sursa(job #97964)
#include<stdio.h>
long n,i,j,k,max;
long d1[100000],d2[100000],d3[100000],a[100000],din[100000];
int main()
{
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
scanf("%ld",&n);
for (i=1; i<=n; i++)
{
scanf("%ld",&a[i]);
d1[i]=a[i];
}
for (i=2; i<=n; i++)
d2[i]=a[i-1];
d2[1]=a[n];
for (i=1; i<=n-1; i++)
d3[i]=a[i+1];
d3[n]=a[1];
din[0]=0;din[1]=0;
for (i=2; i<=n-1; i++)
{
k=din[i-2];
if (din[i-1]>k) k=din[i-1];
if (din[i-3]+d1[i-1]+d1[i]>k) k=din[i-3]+d1[i-1]+d1[i];
din[i]=k;
}
if (din[n-1]>max) max=din[n-1];
din[0]=0;din[1]=0;
for (i=1; i<=n-1; i++)
{
k=din[i-2];
if (din[i-1]>k) k=din[i-1];
if (din[i-3]+d2[i-1]+d2[i]>k) k=din[i-3]+d2[i-1]+d2[i];
din[i]=k;
}
if (din[n-1]>max) max=din[n-1];
din[0]=0;din[1]=0;
for (i=1; i<=n-1; i++)
{
k=din[i-2];
if (din[i-1]>k) k=din[i-1];
if (din[i-3]+d3[i-1]+d3[i]>k) k=din[i-3]+d3[i-1]+d3[i];
din[i]=k;
}
if (din[n-1]>max) max=din[n-1];
printf("%ld",max);
return 0;
}