Pagini recente » Cod sursa (job #1049311) | Cod sursa (job #2655474) | Cod sursa (job #1064448) | Istoria paginii runda/532/clasament | Cod sursa (job #1212729)
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;
int a[100005],dp[100005],i,rs,n;
int main()
{
ifstream cin("oo.in");
ofstream cout("oo.out");
cin>>n;
for(i=1;i<=n;++i) cin>>a[i];
for(i=2;i<=n-1;++i)
if(i<3) dp[i]=max(dp[i-1],a[i]+a[i-1]),rs=max(rs,dp[i]);
else dp[i]=max(dp[i-1],dp[i-3]+a[i]+a[i-1]),rs=max(rs,dp[i]);
memset(dp,0,sizeof(dp));
for(i=3;i<=n-3;++i)
if(i<3) dp[i]=max(dp[i-1],a[i]+a[i-1]),rs=max(rs,dp[i]+a[n-1]+a[n]);
else dp[i]=max(dp[i-1],dp[i-3]+a[i]+a[i-1]),rs=max(rs,dp[i]+a[n-1]+a[n]);
memset(dp,0,sizeof(dp));
for(i=4;i<=n-2;++i)
if(i<3) dp[i]=max(dp[i-1],a[i]+a[i-1]),rs=max(rs,dp[i]+a[1]+a[n]);
else dp[i]=max(dp[i-1],dp[i-3]+a[i]+a[i-1]),rs=max(rs,dp[i]+a[1]+a[n]);
cout<<rs<<'\n';
return 0;
}