Pagini recente » Cod sursa (job #2877159) | Cod sursa (job #1125057) | Cod sursa (job #66411) | Cod sursa (job #340716) | Cod sursa (job #2282052)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("oo.in");
ofstream fout ("oo.out");
unsigned long long v[100005];
unsigned long long profit[100005];
void resetare(int n)
{
for (int i = 1; i <= n; i ++) profit[i] = 0;
}
int main()
{
int n;
fin >> n;
for (int i = 1; i <= n; i ++) fin >> v[i];
unsigned long long maxim = 0;
if (n == 2) maxim = v[1] + v[2];
for (int i = 1; i < n - 1; i ++) {
if (i <= 3) profit[i] = max(profit[i - 1], v[i - 1] + v[i]);
else profit[i] = max(profit[i - 1], v[i - 1] + v[i] + profit[i - 3]);
if (profit[i] > maxim) maxim = profit[i];
}
resetare(n);
for (int i = 2; i < n; i ++) {
if (i <= 4) profit[i] = max(profit[i - 1], v[i - 1] + v[i]);
else profit[i] = max(profit[i - 1], v[i - 1] + v[i] + profit[i - 3]);
if (profit[i] > maxim) maxim = profit[i];
}
resetare(n);
for (int i = 3; i <= n; i ++) {
if (i <= 5) profit[i] = max(profit[i - 1], v[i - 1] + v[i]);
else profit[i] = max(profit[i - 1], v[i - 1] + v[i] + profit[i - 3]);
if (profit[i] > maxim) maxim = profit[i];
}
fout << maxim;
return 0;
}