# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
187104 | 2020-01-12T12:46:48 Z | Akashi | Candies (JOI18_candies) | C++14 | 4 ms | 684 KB |
#include <bits/stdc++.h> using namespace std; const long long INF = 1e18; int n; long long a[200005]; int Left[200005], Right[200005]; priority_queue <pair <int, int> > pq; int main() { scanf("%d", &n); for(int i = 1; i <= n ; ++i){ scanf("%d", &a[i]); Left[i] = i - 1; Right[i] = i + 1; pq.push({a[i], i}); } long long Sol = 0; for(int i = 1; i <= (n + 1) / 2 ; ++i){ while(!pq.empty() && a[pq.top().second] != pq.top().first) pq.pop(); int pos = pq.top().second; pq.pop(); Sol += a[pos]; printf("%lld\n", Sol); int L = Left[pos], R = Right[pos]; Left[pos] = Left[L]; Right[pos] = Right[R]; Right[Left[L]] = pos; Left[Right[R]] = pos; a[pos] = max(a[L] + a[R] - a[pos], -INF); a[L] = a[R] = -INF; pq.push({a[pos], pos}); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 4 ms | 684 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 4 ms | 684 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
2 | Halted | 0 ms | 0 KB | - |