제출 #1101097

#제출 시각아이디문제언어결과실행 시간메모리
1101097KodikHacker (BOI15_hac)C++17
0 / 100
1 ms336 KiB
#include <bits/stdc++.h>
using namespace std;

#define ff first
#define ss second
typedef long long ll;
typedef long double ld;
#define int ll
int mod = 998244353; 


signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin >> n;
    int total = 0;
    int k = n/2;
    vector<int> arr(2*n);
    for(int i = 0; i < n; ++i){
        int x;
        cin >> x;
        arr[i] = arr[n+i] = x;
        total += x;
    }
    vector<pair<int,int>> sliding(n, {0,0});
    int sum = 0;
    for(int i = 0, j = 0; i < n; ++i){
        while(j-i<k){
            sum += arr[j];
            ++j;
        }
        sliding[i].ff = sum;
        sum -= arr[i];
    }
    reverse(arr.begin(), arr.end());
    sum = 0;
    for(int i = 0, j = 0; i < n; ++i){
        while(j-i<k){
            sum += arr[j];
            ++j;
        }
        sliding[n-i-1].ss = sum;
        sum -= arr[i];
    }
    int ans = max(total-max(sliding[n].ss, sliding[1].ff), total-max(sliding[n-1].ss, sliding[0].ff));
    for(int i = 1; i < n-1; ++i){
        ans = max(ans, total-max(sliding[i-1].ss, sliding[i+1].ff));
    }
    cout << ans << '\n';
    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...