Pagini recente » Cod sursa (job #1391721) | Cod sursa (job #1443177) | Cod sursa (job #2372957) | Cod sursa (job #1594822) | Cod sursa (job #2118295)
#include <fstream>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, i, v[100003], maxim, d[100003];
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
d[1] = 0;
d[2] = v[1]+v[2];
d[3] = max(d[2], v[2]+v[3]);
for(i=4;i<n;i++)
d[i] = max(d[i-1], v[i] + v[i-1] + d[i-3]);
maxim = d[n-1];
/// acum, as putea sa il iau pe ultimul si nu pe primul
d[1] = 0;
d[2] = 0;
d[3] = v[2]+v[3];
for(i=4;i<=n;i++)
d[i] = max(d[i-1], v[i] + v[i-1] + d[i-3]);
maxim = max(maxim, d[n]);
///in final, iau primul si ultimul
d[1] = v[n] + v[1];
d[2] = d[1];
d[3] = d[2];
for(i=4;i<n-1;i++)
d[i] = max(d[i-1], v[i] + v[i-1] + d[i-3]);
maxim = max(maxim, d[n-1]);
fout<<maxim;
return 0;
}