Cod sursa(job #3340282)

Utilizator hansHans Silviu hans Data 13 februarie 2026 15:52:32
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

int max_oua(int N, vector<int>& a) {
    if (N == 2) return a[0] + a[1]; // doar o pereche

    auto dp_line = [&](int start, int end) {
        int dp_prev2 = 0, dp_prev1 = 0;
        for (int i = start; i < end; i++) {
            int pair_sum = a[i] + a[(i+1)%N];
            int dp_curr = max(dp_prev1, dp_prev2 + pair_sum);
            dp_prev2 = dp_prev1;
            dp_prev1 = dp_curr;
        }
        return dp_prev1;
    };

    int case1 = dp_line(0, N-1); // ignorăm ultima pereche (N,1)
    int case2 = dp_line(1, N);   // ignorăm prima pereche (1,2)

    return max(case1, case2);
}

int main() {
    // folosim fișierele de input/output
    freopen("oo.in", "r", stdin);
    freopen("oo.out", "w", stdout);

    int N;
    cin >> N;
    vector<int> a(N);
    for (int i = 0; i < N; i++) cin >> a[i];

    int rezultat = max_oua(N, a);
    cout << rezultat << "\n";

    return 0;
}