Pagini recente » Cod sursa (job #2723644) | Cod sursa (job #2547077) | Cod sursa (job #566822) | Cod sursa (job #1709750) | Cod sursa (job #2388149)
#include <fstream>
#define K 100001
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,i,v[K],D[K],sol;
int main()
{///D[i]=suma maxima pe care o pot obtine luand grupuri de cate 2 consecutive(nu 3)
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
///iau primele 2 si nu il iau pe ultimul
D[1]=0;
D[2]=v[1]+v[2];
D[3]=D[2];
for(i=4;i<n;i++)
D[i]=max(D[i-1],D[i-3]+v[i-1]+v[i]);
sol=D[n-1];
///nu il iau pe primul,il iau pe ultimul
D[1]=D[2]=0;
D[3]=v[2]+v[3];
for(i=4;i<=n;i++)
D[i]=max(D[i-1],D[i-3]+v[i-1]+v[i]);
sol=max(sol,D[n]);
///iau primul si al doilea
D[1]=D[2]=D[3]=0;
for(i=4;i<n-1;i++)
D[i]=max(D[i-1],D[i-3]+v[i-1]+v[i]);
sol=max(sol,D[n-2]+v[1]+v[n]);
fout<<sol;
return 0;
}