Pagini recente » Cod sursa (job #78931) | Cod sursa (job #1146949) | Cod sursa (job #1708921) | Cod sursa (job #2063298) | Cod sursa (job #51994)
Cod sursa(job #51994)
#include <stdio.h>
#include <algorithm>
using namespace std;
const int N_MAX = 100010;
struct kkt {
int val, poz;
} v[N_MAX];
int is[N_MAX], N;
int cmp(kkt a, kkt b)
{
return (a.val > b.val);
}
int incr(int x)
{
return (x == N ? 1 : x + 1);
}
int decr(int x)
{
return (x == 1 ? N : x - 1);
}
int main()
{
freopen("oo.in", "r", stdin);
#ifndef _SCREEN_
freopen("oo.out", "w", stdout);
#endif
int i;
scanf("%d\n", &N);
for (i = 1; i <= N; i ++) {
scanf("%d ", &v[i].val);
}
int aux = v[1].val;
for (i = 1; i < N; i ++) {
v[i].val += v[i + 1].val;
v[i].poz = i;
}
v[N].val += aux;
v[N].poz = N;
sort(v + 1, v + N + 1, cmp);
int MAX = 0;
for (i = 1; i <= N; i ++) {
if (!is[v[i].poz] && !is[incr(v[i].poz)]) {
is[v[i].poz] = 1;
is[incr(v[i].poz)] = 1;
MAX += v[i].val;
is[decr(v[i].poz)] = 1;
is[incr(incr(v[i].poz))] = 1;
}
}
printf("%d\n", MAX);
return 0;
}