Cod sursa(job #2473794)

Utilizator vladisimovlad coneschi vladisimo Data 14 octombrie 2019 11:53:54
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <algorithm>
#include <cstdio>

int x[2 + 100000], dp[2 + 100000], sol = 0;

void solve(int left, int right) {
  dp[left] = 0;
  dp[left + 1] = x[left] + x[left + 1];
  for (int i = left + 2; i <= right; i++)
    dp[i] = std::max(dp[i - 1], dp[i - 3] + x[i - 1] + x[i]);
  sol = std::max(sol, dp[right]);
}

int main() {
  freopen("oo.in", "r", stdin);
  freopen("oo.out", "w", stdout);
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++)
    scanf("%d", &x[i]);
  x[n + 1] = x[1];
  solve(1, n - 1);
  solve(2, n);
  solve(3, n + 1);
  printf("%d", sol);
  return 0;
}