Cod sursa(job #2677116)

Utilizator cristiemanuelstroe cristian emanuel cristiemanuel Data 25 noiembrie 2020 20:23:38
Problema Oo Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include  <iostream>
#include  <fstream>
#include  <cstring>

using namespace std;

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

const int Nmax = 1e6 + 1,
          inf = 0x3f3f3f3f;
int n,
    V[Nmax],
    dp[Nmax];

int solve(int st, int N)
{
  for(int i = 0; i <= n + 1; i++)
    dp[i] = -inf;
  dp[st] = V[st] + V[st + 1];
  for(int i = st + 1; i <= N; i++)
    dp[i] = max(dp[i-1], dp[i-3] + V[i] + V[i+1]);
  return dp[N];
}

int main()
{
  in>>n;
  for(int i = 1; i <= n; i++)
    in>>V[i];
  int rez = -inf;
  for(int i = 1; i <= 3; i++){
    int suma;
    switch(i){
      case 1:
        suma = solve(1, n - 2);
        break;
      case 2:
        suma = solve(2, n - 1);
        break;
      case 3:
        suma = solve(1, n - 2);
        break;
    }
    if(suma > rez)
      rez = suma;
  }
  out<<rez;
}