Submission #1114705

#TimeUsernameProblemLanguageResultExecution timeMemory
1114705ThunnusHacker (BOI15_hac)C++17
100 / 100
325 ms26312 KiB
#include<bits/stdc++.h> using namespace std; using i64 = long long; #define int i64 #define vi vector<int> #define vvi vector<vi> #define vb vector<bool> #define pii pair<int, int> #define fi first #define se second #define sz(x) (int)(x).size() signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; const int SZ = (n + 1) / 2; vi a(2 * n + 1); for(int i = 1; i <= n; i++){ cin >> a[i]; a[n + i] = a[i]; } for(int i = 1; i <= 2 * n; i++){ a[i] += a[i - 1]; } auto sum = [&](int l, int r) -> int { if(!l) return a[r]; return a[r] - a[l - 1]; }; multiset<int> s; vi ans(n + 1, LLONG_MAX); for(int i = 1; i <= 2 * n; i++){ if(i + SZ - 1 <= 2 * n) s.emplace(sum(i, i + SZ - 1)); if(i > SZ) s.erase(s.find(sum(i - SZ, i - 1))); ans[(i - 1) % n + 1] = min(ans[(i - 1) % n + 1], *s.begin()); } cout << *max_element(ans.begin() + 1, ans.end()) << "\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...