# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
187107 | 2020-01-12T12:49:14 Z | Akashi | Candies (JOI18_candies) | C++14 | 3 ms | 508 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 <long long, int> > pq; int main() { scanf("%d", &n); for(int i = 1; i <= n ; ++i){ scanf("%lld", &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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 3 ms | 508 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 3 ms | 508 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |