Submission #741059

#TimeUsernameProblemLanguageResultExecution timeMemory
741059Charizard2021Hacker (BOI15_hac)C++17
100 / 100
130 ms10580 KiB
#include<bits/stdc++.h> using namespace std; int a[500005], n; int range(int s, int e){ if(s <= 0){ return a[e] + (a[n] - a[s + n - 1]); } return a[e] - a[s - 1]; } int cur1[500005], cur2[500005]; deque<int> dq, num; int main(){ cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; a[i] += a[i - 1]; } for (int i = 1; i <= n; i++) { cur1[i - 1] = range(i - (n - 1)/2, i); } for (int i = 0; i < n + (n - 1)/2; i++) { if(!num.empty() && num.front() == i - (n + 1) / 2){ num.pop_front(); dq.pop_front(); } while (!dq.empty() && dq.back() > cur1[i % n]) { num.pop_back(); dq.pop_back(); } dq.push_back(cur1[i % n]); num.push_back(i); if(i - (n - 1)/2 >= 0){ cur2[i - (n - 1)/2] = dq.front(); } } cout << *max_element(cur2,cur2+n) << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...