Pagini recente » Cod sursa (job #1643586) | Cod sursa (job #2515655) | Cod sursa (job #2711485) | Cod sursa (job #1291960) | Cod sursa (job #2948970)
#include <bits/stdc++.h>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
int dp1[100001], a[100001], dp2[100001], dp3[100001];
int n;
int main()
{
in >> n;
for(int i = 1; i <= n; i++)
in >> a[i];
dp1[1] = 0;
dp1[2] = a[1] + a[2];
dp1[3] = dp1[4] = dp1[2];
for(int i = 5; i < n; i++)
{
dp1[i] = max(dp1[i - 1], a[i] + a[i - 1] + dp1[i - 3]);
}
dp2[1] = dp2[2] = 0;
dp2[5] = dp2[4] = dp2[2] = a[2] + a[3];
for(int i = 6; i <= n; i++)
dp2[i] = max(dp2[i - 1], a[i] + a[i - 1] + dp2[i - 3]);
dp3[1] = a[n] + a[1];
dp3[2] = dp3[3] = dp3[1]
for(int i = 4; i <= n - 2; i++)
dp3[i] = max(dp3[i - 1], a[i] + a[i - 1] + dp3[i - 3]);
out << max({dp1[n], dp2[n], dp3[n]});
return 0;
}