Pagini recente » Cod sursa (job #176637) | Cod sursa (job #3170229) | Cod sursa (job #6713) | Cod sursa (job #3199356) | Cod sursa (job #3200502)
#include <bits/stdc++.h>
using namespace std;
const int nmax=1e5+5;
int dp[nmax],v[nmax];
int main()
{
/*
dp[i]=nr max de oua din primele i sectoare
*/
ifstream fin ("oo.in");
ofstream fout ("oo.out");
int n;
fin >> n;
for (int i=1;i<=n;++i)
fin >> v[i];
dp[0]=dp[1]=0;
dp[2]=v[1]+v[2];
for (int i=3;i<=n-1;++i)
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i-1]); // luam perechea 1 - 2 (nu putem alege n)
int sol=dp[n-1];
//fout << sol << " ";
dp[2]=0;
for (int i=3;i<=n-3;++i)
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i-1]); // luam perechea (n-1) - n (nu putem alege n-2 si 1)
//fout << dp[n-3]+v[n]+v[n-1] << " ";
sol=max(sol,dp[n-3]+v[n]+v[n-1]);
dp[3]=0;
for (int i=4;i<=n-2;++i)
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i-1]); // luam perechea 1 - n (nu putem alege 2 si n-1)
// fout << dp[n-2]+v[n]+v[1];
sol=max(sol,dp[n-2]+v[n]+v[1]);
fout << sol;
return 0;
}