Pagini recente » Cod sursa (job #202537) | Cod sursa (job #2099295) | Cod sursa (job #991029) | Cod sursa (job #2716129) | Cod sursa (job #2490932)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
int n,i,dp[100005],v[100005],Max;
int main()
{
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
dp[2]=dp[n];
dp[n]=v[1]+v[n];
for(i=3; i<n-1; i++)
{
if(i!=3)
{
if(i!=n-2)
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i+1]);
else
dp[i]=dp[n];
}
else
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i+1]);
if(dp[i]>Max)
Max=dp[i];
}
memset(dp,0,sizeof(dp));
dp[1]=v[1]+v[2];
dp[3]=dp[1];
for(i=4;i<n;i++)
{
if(i!=n-1)
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i+1]);
else
dp[i]=dp[i-1];
if(dp[i]>Max)
Max=dp[i];
}
memset(dp,0,sizeof(dp));
dp[2]=v[2]+v[3];
dp[4]=dp[2];
for(i=5;i<=n;i++)
{
if(i!=n)
dp[i]=max(dp[i-1],dp[i-3]+v[i]+v[i+1]);
else
dp[i]=dp[i-1];
if(dp[i]>Max)
Max=dp[i];
}
g<<Max<<'\n';
return 0;
}