Submission #47075

#TimeUsernameProblemLanguageResultExecution timeMemory
47075BruteforcemanHacker (BOI15_hac)C++11
100 / 100
85 ms28976 KiB
#include "bits/stdc++.h" using namespace std; int n; int a[500010]; long long p[500010]; const long long inf = 1e17; int main(int argc, char const *argv[]) { ios_base :: sync_with_stdio (false); cin.tie (0); cin >> n; for(int i = 0; i < n; i++) { cin >> a[i]; } int move = (n + 1) >> 1; long long sum = 0; for(int i = 0; i < move; i++) { sum += a[i]; } for(int i = 0; i < n; i++) { p[i] = sum; sum -= a[i]; sum += a[(i + move) % n]; } long long ans = 0; deque <pair <long long, int>> Q; for(int i = 0; i < move; i++) { while(!Q.empty() && Q.back().first >= p[i]) { Q.pop_back(); } Q.push_back(make_pair(p[i], i)); } for(int i = 0; i < n; i++) { ans = max(ans, Q.front().first); if(Q.front().second == i) { Q.pop_front(); } int id = (i + move) % n; while(!Q.empty() && Q.back().first >= p[id]) { Q.pop_back(); } Q.push_back(make_pair(p[id], id)); } cout << ans << endl; 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...