Pagini recente » Cod sursa (job #272119) | Cod sursa (job #1968816) | Cod sursa (job #123972) | Cod sursa (job #1089641) | Cod sursa (job #3039436)
#include <iostream>
#include <fstream>
#include <cstring>
#define NMAX 100003
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int dp[NMAX], a[NMAX], N;
int solve(int l, int r) {
if (r - l + 1 <= 1)
return 0;
memset(dp, 0, sizeof(int) * (NMAX - 2));
dp[2] = a[l] + a[l + 1];
for (int i = 3; i <= r - l + 1; i++) {
int ind = i + l - 1;
dp[i] = max(dp[i - 1], dp[i - 3] + a[ind] + a[ind - 1]);
}
return dp[r - l + 1];
}
int main() {
fin >> N;
for (int i = 1; i <= N; i++) {
fin >> a[i];
}
fout << max(max(a[1] + a[2] + solve(4, N - 1), a[1] + a[N] + solve(3, N - 2)), solve(2, N));
return 0;
}