Submission #1191623

#TimeUsernameProblemLanguageResultExecution timeMemory
1191623heheHacker (BOI15_hac)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

int incearca(int now, vector<int> valori, int n) {
    int left_val = 0, right_val = 0, l = now, r;

    vector<int> been(n, 0);
    if (now == n - 1) r = 0;
    else r = now + 1;

    while (!been[l] && !been[r]) {
        left_val += valori[l];
        been[l] = 1;
        been[r] = 1;
        if (l == 0) l = n - 1;
        else l--;
        if (r == n - 1) r = 0;
        else r++;
    }
    if (l == 0) l = n - 1;
    else l--;
    if (!been[l] && n % 2 == 1) left_val += valori[l];

    fill(been.begin(), been.end(), 0);
    l = now;
    if (now == 0) r = n - 1;
    else r = now - 1;

    while (!been[l] && !been[r]) {
        right_val += valori[l];
        been[l] = 1;
        been[r] = 1;
        if (l == n - 1) l = 0;
        else l++;
        if (r == 0) r = n - 1;
        else r--;
    }
    if (l == n - 1) l = 0;
    else l++;
    if (!been[l] && n % 2 == 1) right_val += valori[l];

    return min(right_val, left_val);
}

int main() {
    int n, maximum = -1;
    cin >> n;
    vector<int> valori(n);
    for (int i = 0; i < n; i++) {
        cin >> valori[i];
    }

    for (int i = 0; i < n; i++) {
        maximum = max(maximum, incearca(i, valori, n));
    }

    cout << maximum;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...