Pagini recente » Cod sursa (job #1011715) | Cod sursa (job #1923424) | Cod sursa (job #464153) | Cod sursa (job #2741211) | Cod sursa (job #2269054)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
int a[100005];
int cache[100005][2];
int n;
int solve(int i, bool canLast) {
if (i >= n || (!canLast && i == n - 1)) {
return 0;
}
if (cache[i][canLast] != 0) {
return cache[i][canLast];
}
if (i == 1) {
return max(solve(i + 3, false) + a[i] + a[i + 1], solve(i + 1, true));
}
else {
cache[i][canLast] = max(solve(i + 3, canLast) + a[i] + a[i + 1], solve(i + 1, canLast));
return cache[i][canLast];
}
}
int main() {
freopen("oo.in", "r", stdin);
freopen("oo.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
printf("%d", solve(1, true));
return 0;
}