Pagini recente » Cod sursa (job #1033481) | Cod sursa (job #3167718) | Cod sursa (job #103739) | Cod sursa (job #337679) | Cod sursa (job #2422333)
#include <fstream>
using namespace std;
ifstream cin ("oo.in");
ofstream cout ("oo.out");
int d[4][100005],v[100005];
int main()
{
int n,i,maxi=0;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
d[1][2]=v[1]+v[2];
d[1][3]=d[1][2];
d[1][4]=d[1][2];
for (i=5;i<=n-2;i++)
d[1][i]=max(d[1][i-3]+v[i]+v[i-1],max(d[1][i-2],d[1][i-1]));
d[2][n-1]=v[n]+v[n-1];
d[2][n-2]=d[2][n-1];
d[2][n-3]=d[2][n-1];
for (i=n-4;i>=2;i--)
d[2][i]=max(d[2][i+3]+v[i]+v[i+1],max(d[2][i+1],d[2][i+2]));
d[0][2]=0;
for (i=3;i<=n-1;i++)
d[0][i]=max(d[0][i-3]+v[i]+v[i-1],max(d[0][i-2],d[0][i-1]));
// d[0][1]=max(d[0][n-2]+v[n]+v[1],max(d[0][n-1],d[0][n]));
d[3][1]=v[1]+v[n];
d[3][2]=d[3][1];
d[3][3]=d[3][1];
for (i=4;i<=n-2;i++)
d[3][i]=max(d[3][i-3]+v[i-1]+v[i],max(d[3][i-2],d[3][i-1]));
for (i=1;i<=n;i++)
{
maxi=max(maxi,max(d[0][i],max(d[1][i],max(d[2][i],d[3][i]))));
}
cout<<maxi;
return 0;
}