Pagini recente » Cod sursa (job #2247267) | jc2012/runda-1/clasament | Clasament Seniori | Diferente pentru preoni-2005/runda-3/solutii intre reviziile 17 si 18 | Cod sursa (job #3232129)
#include <iostream>
#include <fstream>
using namespace std;
unsigned int maxi,v[100001],dp1[100001][2],dp2[100001][2],dp3[100001][2],n,e1,e2,e3,i,j,aux;
void citire()
{
}
int main()
{
ifstream f("oo.in");
ofstream g("oo.out");
f>>n;
for(int i=1; i<=n; ++i)
f>>v[i];
e1=v[1]+v[n];
e2=v[1]+v[2];
e3=v[2]+v[3];
dp1[1][1]=e1;
i=2;
for(i; i<=n-1; ++i)
for(j=0; j<=1; ++j)
{
if(j==1)
dp1[i][j]=dp1[i-2][0]+v[i-1]+v[i];
else
dp1[i][j]=max(dp1[i-1][1],dp1[i-1][0]);
}
if(maxi<max(dp1[n-1][1],dp1[n-1][0]))
maxi=max(dp1[n-1][1],dp1[n-1][0]);
dp2[2][1]=e2;
i=3;
for(i; i<=n; ++i)
for(j=0; j<=1; ++j)
{
if(j==1)
dp2[i][j]=dp2[i-2][0]+v[i-1]+v[i];
else
dp2[i][j]=max(dp2[i-1][1],dp2[i-1][0]);
}
if(maxi<max(dp2[n][1],dp2[n][0]))
maxi=max(dp2[n][1],dp2[n][0]);
dp3[3][1]=e3;
i=4;
for(i; i<=n; ++i)
for(j=0; j<=1; ++j)
{
if(j==1)
dp3[i][j]=dp3[i-2][0]+v[i-1]+v[i];
else
dp3[i][j]=max(dp3[i-1][1],dp3[i-1][0]);
}
if(maxi<max(dp3[n][1],dp3[n][0]))
maxi=max(dp3[n][1],dp3[n][0]);
g<<maxi;
return 0;
}