Pagini recente » Cod sursa (job #2870837) | Cod sursa (job #911567) | Cod sursa (job #2418984) | Cod sursa (job #2476630) | Cod sursa (job #1504045)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
const int nmax=100005;
int dinamica[nmax],val[nmax];
int i,n,ras;
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>val[i];
dinamica[2]=dinamica[3]=dinamica[4]=val[1]+val[2];
for (i=5;i<n;i++) /// cazul 1: luam primele doua valori
dinamica[i]=max(val[i]+val[i-1]+dinamica[max(i-3,0)],dinamica[i-1]);
ras=dinamica[n-1];
for (i=1;i<=n;i++)
dinamica[i]=0;
for (i=3;i<=n;i++) /// cazul 2: nu luam primele doua valori
dinamica[i]=max(val[i]+val[i-1]+dinamica[max(i-3,0)],dinamica[i-1]);
ras=max(dinamica[n],ras);
for (i=1;i<=n;i++)
dinamica[i]=0;
dinamica[1]=dinamica[2]=dinamica[3]=val[1]+val[n];
for (i=4;i<n-1;i++) /// cazul 3: luam prima si ultima valoare
dinamica[i]=max(val[i]+val[i-1]+dinamica[max(i-3,0)],dinamica[i-1]);
ras=max(dinamica[n-2],ras);
g<<ras;
return 0;
}