Cod sursa(job #2389258)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 26 martie 2019 21:59:44
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin ("oo.in");
ofstream fout ("oo.out");

int n, v[100001], d[100001], maxx, sol;

int main (){

      fin>>n;
      for(int i=1; i<=n; i++)
            fin>>v[i];

      ///1
      sol=0;
      d[1]=0;
      d[2]=v[1] + v[2];
      d[3]=max(v[1] + v[2], v[2] + v[3]);
      for(int i=4; i<n; i++)
            d[i]=max(d[i-1] , d[i-3] + v[i] + v[i-1]);

      sort(d+1, d+n+1);
      sol=d[n];
      for(int i=1; i<=n; i++)
            d[i]=0;

      if(sol > maxx)
            maxx=sol;

      ///2
      sol=0;
      d[2]=0;
      d[3]=v[2] + v[3];
      d[4]=max(v[2] + v[3], v[3] + v[4]);
      for(int i=5; i<=n; i++)
                  d[i]=max(d[i-1] , d[i-3] + v[i] + v[i-1]);

      sort(d+1, d+n+1);
      sol=d[n];
      for(int i=1; i<=n; i++)
            d[i]=0;

      if(sol > maxx)
            maxx=sol;


      ///3
      sol=0;
      d[3]=0;
      d[4]=v[3] + v[4];
      d[5]=max(v[3] + v[4], v[4] + v[5]);
      for(int i=6; i<=n-2; i++)
            d[i]=max(d[i-1] , d[i-3] + v[i] + v[i-1]);

      sort(d+1, d+n+1);
      sol=d[n] + v[1] + v[n];
      if(sol > maxx)
            maxx=sol;

      fout<<maxx;

      return 0;
}