Cod sursa(job #3146623)

Utilizator catalinmarincatalinmarin catalinmarin Data 21 august 2023 21:41:15
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("oo.in");
ofstream cout("oo.out");
int v[100001];
int dp[100001];
int main(){
    int best_answer = 0;
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++){
        cin >> v[i];
    }
    dp[1] = v[n] + v[1];
    dp[2] = dp[1];
    for (int i = 3; i <= n - 2; i++){
        dp[i] = max(v[i] + v[i - 1] + dp[i - 3], dp[i - 1]);
    }
    dp[n - 1] = dp[n - 2];
    best_answer = dp[n - 1];
    memset(dp, 0, sizeof(dp));
    dp[1] = 0;
    dp[3] = v[2] + v[3];
    dp[2] = v[2];
    for (int i = 4; i <= n; i++){
        dp[i] = max(v[i] + v[i - 1] + dp[i - 3], dp[i - 1]);
    }
    if (dp[n] > best_answer)
        best_answer = dp[n];
    memset(dp, 0, sizeof(dp));
    dp[1] = v[1];
    dp[2] = v[1] + v[2];
    dp[3] = dp[2];
    for (int i = 4; i <= n - 1; i++){
        dp[i] = max(v[i] + v[i - 1] + dp[i - 3], dp[i - 1]);
    }
    dp[n] = dp[n-1];
    if (dp[n] > best_answer)
        best_answer = dp[n];
    cout << best_answer;
}