Pagini recente » Cod sursa (job #931919) | Cod sursa (job #2353267) | Cod sursa (job #1671668) | Cod sursa (job #2081293) | Cod sursa (job #41413)
Cod sursa(job #41413)
#include <cstdio>
#define dim 100001
long N, s1, s2, s3, Sol;
long d[dim], n[dim];
int A[dim];
void Read();
void Solve();
void Write();
long max(long, long);
int main()
{
Read();
Solve();
Write();
return 0;
}
void Read()
{
freopen("oo.in", "r", stdin);
scanf("%ld", &N);
long i;
for(i=1; i<=N; ++i)
scanf("%d", A+i);
fclose(stdin);
}
void Solve()
{
long i;
for(i=3; i<=N; ++i)
{
d[i] = A[i] + A[i-1] + n[i-2];
n[i] = max(n[i-1], d[i-1]);
}
s1 = d[N] > n[N] ? d[N] : n[N];
for(i=3; i<=N; ++i)
d[i] = n[i] = 0;
for(i=2; i<N; ++i)
{
d[i] = A[i] + A[i-1] + n[i-2];
n[i] = max(n[i-1], d[i-1]);
}
s2 = d[N-1] > n[N-1] ? d[N-1] : n[N-1];
for(i=2; i<N; ++i)
d[i] = n[i] = 0;
A[0] = A[N];
for(i=1; i<=N-2; ++i)
{
d[i] = A[i] + A[i-1] + n[i-2];
n[i] = max(n[i-1], d[i-1]);
}
s3 = d[N-2] > n[N-2] ? d[N-2] : n[N-2];
Sol = max(max(s1, s2), s3);
}
void Write()
{
freopen("oo.out", "w", stdout);
printf("%ld", Sol);
fclose(stdout);
}
long max(long a, long b)
{
return
a > b ? a : b;
}