Pagini recente » Rezultatele filtrării | Diferente pentru utilizator/crawler intre reviziile 46 si 1 | Rezultatele filtrării | Cod sursa (job #338435) | Cod sursa (job #131207)
Cod sursa(job #131207)
#include <stdio.h>
#include <math.h>
long n, i, sum, a[100010], c[100010], maxim;
long max(long num1, long num2) {
if (num1 < num2) {
return num2;
}
return num1;
}
int main() {
freopen("oo.in", "r", stdin);
freopen("oo.out", "w", stdout);
scanf("%ld", &n);
for (i = 1; i <= n; ++i) {
scanf("%ld", &a[i]);
}
//dinamica I
c[0] = 0;
c[1] = 0;
c[2] = a[1] + a[2];
for (i = 3; i < n; ++i) {
c[i] = max(c[i - 3] + a[i - 1] + a[i], c[i - 1]);
}
maxim = c[n - 1];
for (i = 1; i <= n; ++i) {
c[i] = 0;
}
//dinamica II
c[3] = a[2] + a[3];
for (i = 3; i <= n; ++i) {
c[i] = max(c[i - 3] + a[i - 1] + a[i], c[i - 1]);
}
printf("%ld", max(maxim, c[n - 1]));
return 0;
}