Cod sursa(job #2633790)

Utilizator euyoTukanul euyo Data 8 iulie 2020 16:16:27
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int d[100001];
int v[100001];

int processDP( int st, int dr ) {
  int r;
  d[st] = 0;
  d[st + 1] = v[st] + v[st + 1];
  for ( int i = st + 2; i <= dr; ++i ) {
	if ( i - 3 >= st ) {
	  d[i] = max( d[i - 1], d[i - 3] + v[i] + v[i - 1] );
    } else {
      d[i] = max( d[i - 1], v[i] + v[i - 1] );
	} 
  }
  r = d[dr];
  return r;
}

int main() {
  int n, i;
  
  fin >> n;
  for ( i = 1; i <= n; ++i ) {
	fin >> v[i];
  }
  v[n + 1] = v[1];
  fout << max({ processDP( 1, n - 1 ), processDP( 2, n ), processDP( 3, n + 1 ) });
  fin.close();
  fout.close();
  return 0;
}