Pagini recente » Cod sursa (job #922703) | Cod sursa (job #734941) | Cod sursa (job #949216) | Cod sursa (job #2119326) | Cod sursa (job #2444706)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, v[100005], dp[100005][3];
int solve(int index, int lungime)
{
if (index + 1 > lungime) return 0;
if (index == 1)
{
return max(solve(index + 1, lungime), solve(index + 3, n - 1) + v[index] + v[index + 1]);
}
else if (index == 2)
{
return max(solve(index + 1, lungime), solve(index + 3, n) + v[index] + v[index + 1]);
}
return max(solve(index + 1, lungime), solve(index + 3, lungime) + v[index] + v[index + 1]);
}
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> v[i];
v[n + 1] = v[1];
for (int i = n + 1; i >= 1; --i)
{
for (int j = 2; j >= 0; --j)
{
int nr = n - j + 1;
if (i + 1 > nr) continue;
if (i == 1)
{
dp[i][j] = max(dp[i + 1][j], v[i] + v[i + 1] + dp[i + 3][2]);
//return max(solve(index + 1, lungime), solve(index + 3, n - 1) + v[index] + v[index + 1]);
}
else if (i == 2)
{
dp[i][j] = max(dp[i + 1][j], v[i] + v[i + 1] + dp[i + 3][1]);
//return max(solve(index + 1, lungime), solve(index + 3, n) + v[index] + v[index + 1]);
}
else
{
dp[i][j] = max(dp[i + 1][j], v[i] + v[i + 1] + dp[i + 3][j]);
//return max(solve(index + 1, lungime), solve(index + 3, lungime) + v[index] + v[index + 1]);
}
}
}
fout << dp[1][0] << "\n";
return 0;
}