# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
44438 | ssnsarang2023 | Candies (JOI18_candies) | C++17 | 169 ms | 10316 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, int> pli;
const int N = (int)2e5+5;
const ll oo = (ll)1e16;
int n, nxt[N], pre[N];
ll a[N];
priority_queue<pli> pq;
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%lld", &a[i]);
nxt[i] = i + 1, pre[i] = i - 1;
pq.push(pli(a[i], i));
}
nxt[n] = 0;
ll ans = 0;
for (int i = 1; i <= ((n + 1) >> 1); ++i) {
for (; pq.top().first != a[pq.top().second]; pq.pop());
int x = pq.top().second, l = pre[x], r = nxt[x];
printf("%lld\n", ans += a[x]);
pq.pop();
pre[nxt[x] = nxt[r]] = x;
nxt[pre[x] = pre[l]] = x;
a[x] = l && r ? max(-oo, a[l] + a[r] - a[x]) : -oo;
a[l] = a[r] = -oo;
pq.push(pli(a[x], x));
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |