Cod sursa(job #1958440)

Utilizator edi_laitinLaitin Eduard edi_laitin Data 8 aprilie 2017 13:14:53
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}