| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1143631 | M0stafa | Hacker (BOI15_hac) | C++20 | 0 ms | 0 KiB | 
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define all(x) x.begin(), x.end()
template<typename T> istream &operator>>(istream &in, vector<T> &v) { for (auto &x: v) in >> x; return in; }
template<typename T>ostream &operator<<(ostream &out, const vector<T> &v) { for (const T &x: v) out << x << ' ';return out;}
#ifndef ONLINE_JUDGE
#define dout(...) cerr << "Line:" << __LINE__ << " [" << #__VA_ARGS__ << "] = ["; _print(__VA_ARGS__)
#else
#define dout(...)
#endif
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n;
    cin >> n;
    vector<int> a(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        a.push_back(a[i]);
    }
    for (int i = 1; i <= 2 * n; i++)
        a[i] += a[i - 1];
    multiset<int> st;
    vector<int> ans(n + 1, 1e18);
    int Slide = (n + 1) / 2;
    for (int i = 1; i <= 2 * n; i++) {
        if (i + Slide - 1 <= 2 * n) {
            int l = i;
            int r = l + (Slide - 1);
            st.insert(a[r] - a[l - 1]);
        }
        if (i > Slide) {
            int r = i - 1;
            int l = r - Slide;
            st.erase(st.find(a[r] - a[l]));
        }
        int Prev_idx = (i - 1) % n + 1;
        dout(st);
        ans[Prev_idx] = min(ans[Prev_idx], *st.begin());
    }
    int res = 0;
    for (int i = 1; i <= n; i++) {
        res = max(res, ans[i]);
    }
    cout << res;
    return 0;
}
