Pagini recente » Cod sursa (job #968614) | Cod sursa (job #1479987) | Istoria paginii runda/redsnow_2 | Profil zvon | Cod sursa (job #1220564)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, sum, maxim, V[100010], dp[100010];
int Solve(int left, int right)
{
int maxim = 0;
dp[1] = dp[2] = 0;
for (int i=left; i<=right; i++)
{
if (i > 2 && dp[i-3] > maxim) maxim = dp[i-3];
dp[i] = V[i] + V[i+1] + maxim;
}
for (int i=right - 3; i<=right; i++)
{
if (dp[i] > maxim) maxim = dp[i];
}
return maxim;
}
int main()
{
fin >> n;
for (int i=1; i<=n; i++) fin >> V[i];
V[n+1] = V[1];
fout << max(Solve(1, n-2), max(Solve(2, n-1), Solve(3, n))) << '\n';
fout.close();
return 0;
}