Pagini recente » Cod sursa (job #284017) | Cod sursa (job #491298) | Cod sursa (job #1890840) | Cod sursa (job #1020145) | Cod sursa (job #2282044)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("oo.in");
ofstream fout ("oo.out");
int v[100005], 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];
int maxim = 0;
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[n - 2] > maxim) maxim = profit[n - 2];
resetare(n);
for (int i = 2; i < n; 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[n - 1] > maxim) maxim = profit[n - 1];
resetare(n);
for (int i = 3; i <= n; 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[n] > maxim) maxim = profit[n];
fout << maxim;
return 0;
}