Pagini recente » Cod sursa (job #1529620) | Cod sursa (job #2453233) | Cod sursa (job #1992583) | Cod sursa (job #2239433) | Cod sursa (job #2422328)
#include <fstream>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
int v[100001],d[100001][2];
int main()
{
int i,n,max1=0;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
///ii luam pe primul si ultimul
d[1][1]=v[1]+v[n];
for(i=2; i<=n-2; i++)
{
d[i][1]=max(max(d[i-2][0],d[i-3][0]),d[i-4][0])+v[i]+v[i-1];
d[i][0]=max(d[i-1][1],d[i-1][0]);
}
max1=max(max1,max(d[n-1][2],d[n-2][0]));
///ii luam pe primul si al doilea
for(i=1; i<=n; i++)
d[i][1]=d[i][0]=0;
d[2][1]=v[2]+v[1];
for(i=3; i<=n-1; i++)
{
d[i][1]=max(max(d[i-2][0],d[i-3][0]),d[i-4][0])+v[i]+v[i-1];
d[i][0]=max(d[i-1][1],d[i-1][0]);
}
max1=max(max1,max(d[n-1][0],d[n-1][1]));
///ii luam pe al treilea si al doilea
for(i=1; i<=n; i++)
d[i][1]=d[i][0]=0;
d[3][1]=v[3]+v[2];
for(i=4; i<=n; i++)
{
d[i][1]=max(max(d[i-2][0],d[i-3][0]),d[i-4][0])+v[i]+v[i-1];
d[i][0]=max(d[i-1][1],d[i-1][0]);
}
max1=max(max1,max(d[n][1],d[n][0]));
out<<max1;
return 0;
}