Pagini recente » Cod sursa (job #975077) | Cod sursa (job #1745528) | Cod sursa (job #2138152) | Cod sursa (job #1747619) | Cod sursa (job #2473794)
#include <algorithm>
#include <cstdio>
int x[2 + 100000], dp[2 + 100000], sol = 0;
void solve(int left, int right) {
dp[left] = 0;
dp[left + 1] = x[left] + x[left + 1];
for (int i = left + 2; i <= right; i++)
dp[i] = std::max(dp[i - 1], dp[i - 3] + x[i - 1] + x[i]);
sol = std::max(sol, dp[right]);
}
int main() {
freopen("oo.in", "r", stdin);
freopen("oo.out", "w", stdout);
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &x[i]);
x[n + 1] = x[1];
solve(1, n - 1);
solve(2, n);
solve(3, n + 1);
printf("%d", sol);
return 0;
}