Pagini recente » Cod sursa (job #3232133) | Diferente pentru implica-te/scrie-articole intre reviziile 36 si 37 | Cod sursa (job #3232131)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
const int NMAX = 100000 + 1;
int n, i, v[NMAX], dp[NMAX];
int main()
{
f >> n;
for (i = 1; i <= n; ++i)
f >> v[i];
f.close();
/// ultimul cu primul
dp[2] = v[n] + v[1];
for (i = 3; i <= n - 1; ++i)
dp[i] = max(dp[i-1], dp[i-3] + v[i-2] + v[i-1]);
int v1 = dp[n-1];
/// primul cu al doilea
dp[3] = v[1] + v[2];
for (i = 4; i <= n; ++i)
dp[i] = max(dp[i-1], dp[i-3] + v[i-2] + v[i-1]);
int v2 = dp[n];
/// al doilea cu al treilea
dp[4] = v[2] + v[3];
for (i = 5; i <= n; ++i)
dp[i] = max(dp[i-1], dp[i-3] + v[i-2] + v[i-1]);
int v3 = dp[n];
g << max(v1, max(v2, v3));
g.close();
return 0;
}