Pagini recente » Borderou de evaluare (job #992092) | Cod sursa (job #3279662)
#include <fstream>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
#define NMAX 100005
int v[NMAX];
int dinamica(int start, int n) {
int dp[NMAX] = {0};
dp[start] = v[start] + v[start - 1];
for (int i = start + 1; i <= n + start - 3; ++i) {
dp[i] = max(dp[i - 1], max(dp[i - 2], dp[i - 3] + v[i] + v[i - 1]));
}
return dp[n + start - 3];
}
int main() {
int n;
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
}
v[n + 1] = v[1];
int maxim = max(dinamica(2, n), max(dinamica(3, n), dinamica(4, n)));
fout << maxim;
return 0;
}