Pagini recente » Cod sursa (job #1917756) | Cod sursa (job #2647370) | Cod sursa (job #1852988) | Cod sursa (job #813593) | Cod sursa (job #1958440)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int N,DP[100005],O[100005],sol;
void Read()
{
fin>>N;
for(int i=1;i<=N;i++)
{
fin>>O[i];
}
}
void Solve()
{
for(int i=3;i<=N-1;i++)
DP[i]=max(DP[i-1],DP[i-3]+O[i]+O[i-1]);
sol=max(sol,DP[N-1]);
memset(DP,0,sizeof(DP));
for(int i=5;i<=N-1;i++)
DP[i]=max(DP[i-1],DP[i-3]+O[i]+O[i-1]);
sol=max(sol,DP[N-1]+O[1]+O[2]);
memset(DP,0,sizeof(DP));
for(int i=3;i<=N-3;i++)
DP[i]=max(DP[i-1],DP[i-3]+O[i]+O[i-1]);
sol=max(sol,DP[N-3]+O[N]+O[N-1]);
memset(DP,0,sizeof(DP));
for(int i=4;i<=N-2;i++)
DP[i]=max(DP[i-1],DP[i-3]+O[i]+O[i-1]);
sol=max(sol,DP[N-2]+O[1]+O[N]);
memset(DP,0,sizeof(DP));
fout<<sol;
}
int main()
{
Read();
Solve();
return 0;
}