Pagini recente » Cod sursa (job #1887489) | Cod sursa (job #1929838) | Cod sursa (job #691788) | Cod sursa (job #683427) | Cod sursa (job #2282070)
#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];
profit[1] = v[1] + v[n];
for (int i = 2; 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;
}