Pagini recente » Cod sursa (job #2618962) | Cod sursa (job #2892412) | Borderou de evaluare (job #2106768) | Cod sursa (job #2531205) | Cod sursa (job #2652310)
#include <bits/stdc++.h>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
const int lim=1e5+10;
int dp[3][lim];
int v[lim];
int main()
{
int n;
in>>n;
for(int i=1;i<=n;++i)
in>>v[i];
if(n==2) {out<<v[1]+v[2]<<'\n';return 0;}
v[n+1]=v[1];
dp[0][2]=dp[0][3]=dp[0][4]=v[1]+v[2];
dp[1][3]=dp[1][4]=v[2]+v[3];
dp[2][4]=v[3]+v[4];
for(int i=5;i<=n+1;++i)
{
dp[0][i]=dp[0][i-1];
dp[1][i]=dp[1][i-1];
dp[2][i]=dp[2][i-1];
if(i<=n-1)
dp[0][i]=max(dp[0][i],dp[0][i-3]+v[i-1]+v[i]);
if(i<=n)
dp[1][i]=max(dp[1][i],dp[1][i-3]+v[i-1]+v[i]);
dp[2][i]=max(dp[2][i],dp[2][i-3]+v[i-1]+v[i]);
}
out<<max({dp[0][n+1],dp[1][n+1],dp[2][n+1]})<<'\n';
return 0;
}