Pagini recente » Cod sursa (job #1578431) | Cod sursa (job #1728485) | Cod sursa (job #1321685) | Cod sursa (job #2670201) | Cod sursa (job #2069703)
#define DM 100001
#include <cstring>
#include <fstream>
using namespace std;
ifstream fi ("oo.in");
ofstream fo ("oo.out");
int n, dp[DM], v[DM], mx;
int main()
{
fi >> n;
for (int i = 1; i <= n; ++i)
fi >> v[i];
if (n == 2)
{
fo << v[1] + v[2];
return 0;
}
if (n == 3)
{
fo << max(v[1] + v[2], max(v[2] + v[3], v[3] + v[1]));
return 0;
}
dp[1] = v[1] + v[n];
for (int i = 2; i < n - 1; ++i)
dp[i] = max(dp[i-1], dp[max(i-3, 0)] + v[i] + v[i-1]);
mx = dp[n-2];
memset(dp, 0, sizeof(dp));
dp[n] = v[n] + v[1];
for (int i = n - 1; i > 2; --i)
dp[i] = max(dp[i+1], dp[min(n+1, i+3)] + v[i] + v[i+1]);
mx = max(mx, dp[3]);
fo << mx;
return 0;
}