Submission #723548

#TimeUsernameProblemLanguageResultExecution timeMemory
723548dxz05Hacker (BOI15_hac)C++17
40 / 100
1077 ms852 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
#define all(x) (x).begin(), (x).end()
#define MP make_pair
const int N = 100500;

int n;
int a[N], p[N];

int get_sum(int l, int r){
    if (l <= r){
        return p[r] - (l == 0 ? 0 : p[l - 1]);
    } else {
        return p[r] + (p[n - 1] - p[l - 1]);
    }
}

void solve(){
    cin >> n;

    for (int i = 0; i < n; i++){
        cin >> a[i];
        p[i] = a[i] + (i > 0 ? p[i - 1] : 0);
    }

    int ans = 0;
    for (int i = 0; i < n; i++){
        int mx = 0;
        for (int l = i + 1; l < n; l++){
            int r = (l + n / 2 - 1) % n;
            if (l <= r && l <= i && i <= r) continue;
            if (l > r && (l <= i || i <= r)) continue;
            mx = max(mx, get_sum(l, r));
        }

        for (int l = 0; l < i; l++){
            int r = (l + n / 2 - 1) % n;
            if (l <= r && l <= i && i <= r) continue;
            if (l > r && (l <= i || i <= r)) continue;
            mx = max(mx, get_sum(l, r));
        }

        ans = max(ans, get_sum(0, n - 1) - mx);
    }

    cout << ans << endl;

}

int main() {
    ios_base::sync_with_stdio(false);

#ifdef LOCAL
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif

    solve();

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...