Cod sursa(job #3296551)

Utilizator AlexTimplaruAlexandru Timplaru AlexTimplaru Data 13 mai 2025 16:30:34
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;

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

const int NMAX = 100000;

int n, s[NMAX], p1[NMAX], m1[NMAX], p2[NMAX], m2[NMAX], p3[NMAX], m3[NMAX];

int at(int s[], int i) {
    int r = i % n;
    if(r < 0) r += n;
    return s[r];
}

int main(){

    cin >> n;
    for(int i = 0; i < n; i++) {
        cin >> s[i];
    }

    for(int i = 1; i < n-1; i++) {
        p1[i] = at(s, i-1) + at(s, i) + at(m1, i-3);
        m1[i] = max(at(p1, i), at(m1, i-1));
    }
    // m1[n-2]
    for(int i = 2; i < n; i++) {
        p2[i] = at(s, i-1) + at(s, i) + at(m2, i-3);
        m2[i] = max(at(p2, i), at(m2, i-1));
    }
    //m2[n-1]
    for(int i = 3; i < n; i++) {
        p3[i] = at(s, i-1) + at(s, i) + at(m3, i-3);
        m3[i] = max(at(p3, i), at(m3, i-1));
    }
    p3[0] = at(s, -1) + at(s, 0) + at(m3, -3);
    m3[0] = max(at(p3, 0), at(m3, -1));
    //m3[0]

    cout << max(m1[n-2], max(m2[n-1], m3[0])) << "\n";

    return 0;
}