Pagini recente » Cod sursa (job #604735) | Cod sursa (job #979395) | Cod sursa (job #315604) | Cod sursa (job #2129021) | Cod sursa (job #2570822)
#include <iostream>
#include <fstream>
#define nmax 100001
#define inf 0x3f3f3f3f
using namespace std;
ifstream f("oo.in");
ofstream o("oo.out");
int n,i,v[nmax],dp0[nmax],dp1[nmax],dp2[nmax],sol;
void din(){
for(i=2;i<=n;++i){
dp0[i]=max(dp0[i-1],dp2[i-1]);
dp1[i]=dp0[i-1]+v[i];
dp2[i]=dp1[i-1]+v[i];
}
}
int main()
{
f >> n;
for(i=1;i<=n;++i)
f >> v[i];
if(n==2){
o << v[1]+v[2] << '\n';
return 0;
}
//daca nu iau nmc la inceput
dp0[1]=0;
dp1[1]=-inf;
dp2[1]=-inf;
din();
sol=max(sol,max(dp2[n],dp0[n]));
//daca iau 1 ou la inceput
dp0[1]=-inf;
dp1[1]=v[1];
dp2[1]=-inf;
din();
sol=max(sol,dp0[n]);
//daca iau 2 oua la inceput
dp0[1]=-inf;
dp1[1]=-inf;
dp2[1]=v[1];
din();
sol=max(sol,dp1[n]);
o << sol << '\n';
return 0;
}