제출 #92922

#제출 시각아이디문제언어결과실행 시간메모리
92922popovicirobertHacker (BOI15_hac)C++14
40 / 100
4 ms632 KiB
#include <bits/stdc++.h> #define lsb(x) (x & (-x)) #define ll long long #define ull unsigned long long #define ld long double // 217 // 44 using namespace std; const int MAXN = (int) 5e5 + 5; int arr[MAXN + 1], n; int pref[MAXN + 1], suff[MAXN + 1]; inline int get(int l, int r) { if(l <= 0) { return suff[n + l] + pref[r]; } if(r > n) { return suff[l] + pref[r - n]; } return pref[r] - pref[l - 1]; } inline int get(multiset <int> &mst, int x) { if(mst.count(x) > 1) { return x; } return *prev(mst.find(x)); } int main() { //ifstream cin("A.in"); //ofstream cout("A.out"); int i; ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); cin >> n; for(i = 1; i <= n; i++) { cin >> arr[i]; pref[i] = pref[i - 1] + arr[i]; } for(i = n; i >= 1; i--) { suff[i] = suff[i + 1] + arr[i]; } multiset <int> mst; int len = (n + 1) / 2; for(i = 1; i <= len; i++) { mst.insert(get(i - len + 1, i)); } int ans = get(mst, *mst.begin()); for(i = 2; i <= n; i++) { mst.erase(mst.find(get(i - 1 - len + 1, i - 1))); mst.insert(get(i, i + len - 1)); ans = max(ans, *mst.begin()); } cout << ans; //cin.close(); //cout.close(); 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...