Cod sursa(job #2489719)

Utilizator UrsuCEUrsu Catalin Eugen UrsuCE Data 9 noiembrie 2019 11:28:48
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

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

int dp[100001] , N, k;
int a [100004];


/**

*/



int main()
{
    int n , j ;
    int i , M  = 0, x;
    fin >> n;
  for(i = 1 ; i <= n ; i++)
    fin >> a[i];
  ///aleg obligatoriu pe a[1] + a[2];
  dp[1] = 0;
  dp[2] = a[1] + a[2];
  dp[3] = dp[2];
  dp[4] = dp[3];
  for(i = 5; i < n ; i++)
  {
      dp[i] = max(dp[i - 1],a[i] + a[ i - 1] + dp[i - 3]);
  }
  M = dp[n - 1];


///aleg obligatoriu pe a[2] + a[3];
dp[1] = 0 ;
 dp[2] = 0;
 dp[3] = a[2] + a[3];
 dp[4] = dp[5]  = dp[3];
 for(i = 6; i <= n ; i++)
    dp[i] = max(dp[i - 1],a[i] + a[ i - 1] + dp[i - 3]);
M = max(M,dp[n]);


   // aleg obligatoriu oe a[1] + a[n];
   dp[1] = a[1] + a[n];
   dp[2] = dp[3] = dp[1];
   for(i = 4; i <=n - 2; i++)
       dp[i] = max(dp[i - 1],a[i] + a[ i - 1] + dp[i - 3]);
M = max(M,dp[n]);


 fout << M;


   fout.close();


    return 0;
}