Pagini recente » Cod sursa (job #1933818) | Cod sursa (job #494214) | Cod sursa (job #2462392) | Cod sursa (job #2401853) | Cod sursa (job #2389258)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("oo.in");
ofstream fout ("oo.out");
int n, v[100001], d[100001], maxx, sol;
int main (){
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
///1
sol=0;
d[1]=0;
d[2]=v[1] + v[2];
d[3]=max(v[1] + v[2], v[2] + v[3]);
for(int i=4; i<n; i++)
d[i]=max(d[i-1] , d[i-3] + v[i] + v[i-1]);
sort(d+1, d+n+1);
sol=d[n];
for(int i=1; i<=n; i++)
d[i]=0;
if(sol > maxx)
maxx=sol;
///2
sol=0;
d[2]=0;
d[3]=v[2] + v[3];
d[4]=max(v[2] + v[3], v[3] + v[4]);
for(int i=5; i<=n; i++)
d[i]=max(d[i-1] , d[i-3] + v[i] + v[i-1]);
sort(d+1, d+n+1);
sol=d[n];
for(int i=1; i<=n; i++)
d[i]=0;
if(sol > maxx)
maxx=sol;
///3
sol=0;
d[3]=0;
d[4]=v[3] + v[4];
d[5]=max(v[3] + v[4], v[4] + v[5]);
for(int i=6; i<=n-2; i++)
d[i]=max(d[i-1] , d[i-3] + v[i] + v[i-1]);
sort(d+1, d+n+1);
sol=d[n] + v[1] + v[n];
if(sol > maxx)
maxx=sol;
fout<<maxx;
return 0;
}