Pagini recente » Cod sursa (job #756754) | Cod sursa (job #2214631) | Cod sursa (job #824543) | Cod sursa (job #1258569) | Cod sursa (job #2907556)
#include <bits/stdc++.h>
using namespace std;
int n;
int ans = 0;
int dp[100005],A[100005];
int main()
{
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n;
for(int i = 1;i <= n; ++i)cin >> A[i];
//prima si a doua
dp[1] = A[1];
dp[2] = A[1] + A[2];
for(int i = 3;i < n; ++i)
dp[i] = max(dp[i-1],dp[i-3] + A[i-1] + A[i]);
ans = max(ans , dp[n-1]);
memset(dp,0,sizeof(dp));
//prima si ultima
dp[1] = A[1] + A[n];
for(int i = 2;i <= n - 2; ++i)
dp[i] = max(dp[i-1] , dp[i-3] + A[i-1] + A[i]);
ans = max(ans , dp[n-2]);
memset(dp,0,sizeof(dp));
//ignore prima
dp[2] = A[2];
dp[3] = A[2] + A[3];
for(int i = 4;i <= n; ++i)
dp[i] = max(dp[i-1] , dp[i-3] + A[i-1] + A[i]);
ans = max(ans , dp[n]);
cout << ans;
}