Pagini recente » Cod sursa (job #2116028) | Cod sursa (job #3172104) | Cod sursa (job #2115099) | Cod sursa (job #805877) | Cod sursa (job #1220558)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, sum, maxim, V[100010];
int Solve(int left, int right)
{
int maxim = 0;
int dp[100010];
memset(dp, 0, sizeof(dp));
for (int i=left-1; 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=left-1; 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;
}