Pagini recente » Cod sursa (job #2493266) | Cod sursa (job #3267049) | Cod sursa (job #1901327) | Cod sursa (job #740337) | Cod sursa (job #98235)
Cod sursa(job #98235)
#include <stdio.h>
int a[100010],d[100010],n,max,m,x,y;
int main()
{
freopen("oo.in","rt",stdin);
freopen("oo.out","wt",stdout);
scanf("%d",&n);
int i;
for (i=1; i<=n; ++i) scanf("%d",&a[i]);
max=0;
d[0]=0;
m=0;
for (i=2; i<n; ++i)
{
max=d[i-2];
if (max<d[i-1]) max=d[i-1];
if (max<d[i-3]+a[i-1]+a[i] && i>2) max=d[i-3]+a[i-1]+a[i];
if (i==2 && max<a[i-1]+a[i]) max=a[i-1]+a[i];
d[i]=max;
}
if (d[n-1]>m) m=d[n-1];
a[n+1]=a[1];
for (i=1; i<=n; ++i) a[i]=a[i+1];
max=0;
d[0]=0;
for (i=2; i<n; ++i)
{
max=d[i-2];
if (max<d[i-1]) max=d[i-1];
if (max<d[i-3]+a[i-1]+a[i] && i>2) max=d[i-3]+a[i-1]+a[i];
if (i==2 && max<a[i-1]+a[i]) max=a[i-1]+a[i];
d[i]=max;
}
if (d[n-1]>m) m=d[n-1];
x=a[n-1];
y=a[n];
for (i=n; i>=3; --i) a[i]=a[i-2];
a[1]=x;
a[2]=y;
max=0;
d[0]=0;
for (i=2; i<n; ++i)
{
max=d[i-2];
if (max<d[i-1]) max=d[i-1];
if (max<d[i-3]+a[i-1]+a[i] && i>2) max=d[i-3]+a[i-1]+a[i];
if (i==2 && max<a[i-1]+a[i]) max=a[i-1]+a[i];
d[i]=max;
}
if (d[n-1]>m) m=d[n-1];
printf("%d\n",m);
return 0;
}