Pagini recente » Cod sursa (job #2090941) | Cod sursa (job #1591432) | Cod sursa (job #2038087) | Cod sursa (job #1934066) | Cod sursa (job #2069229)
#define DM 100001
#include <fstream>
using namespace std;
ifstream fi ("oo.in");
ofstream fo ("oo.out");
int n, dp[DM], v[DM], x[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[100001]));
return 0;
}
dp[1] = v[1] + v[n], dp[2] = v[2] + v[1];
dp[3] = max(max(dp[1], dp[2]), v[3] + v[2]);
mx = max(dp[1], max(dp[2], dp[3]));
for (int i = 4; i < n - 1; ++i)
dp[i] = max(dp[i-3] + v[i] + v[i-1], max(dp[i-1], dp[i-2]));
mx = max(mx, dp[n-2]);
dp[1] = dp[2] = 0;
dp[3] = v[3] + v[2];
for (int i = 4; i <= n; ++i)
dp[i] = max(dp[i-3] + v[i] + v[i-1], max(dp[i-1], dp[i-2]));
mx = max(mx, dp[n]);
fo << mx;
return 0;
}