Submission #603267

#TimeUsernameProblemLanguageResultExecution timeMemory
603267elkernosCandies (JOI18_candies)C++17
100 / 100
106 ms11788 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

int32_t main()
{
    cin.tie(0)->sync_with_stdio(0);
    int n;
    cin >> n;
    vector<int> a(n + 2), l(n + 2), r(n + 2);
    priority_queue<pair<int, int>> q;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        l[i] = i - 1, r[i] = i + 1;
        q.emplace(a[i], i);
    }
    l[n + 1] = n;
    r[0] = 1;
    const int oo = 1e18;
    a[0] = a[n + 1] = -oo;
    int ans = 0;
    vector<bool> used(n + 2);
    for(int t = 1; t <= (n + 1) / 2; t++) {
        while(used[q.top().second]) {
            q.pop();
        }
        auto [add, i] = q.top();
        q.pop();
        ans += add;
        a[i] = a[l[i]] + a[r[i]] - a[i];
        q.emplace(a[i], i);
        used[l[i]] = used[r[i]] = 1;
        l[i] = l[l[i]];
        r[l[i]] = i;
        r[i] = r[r[i]];
        l[r[i]] = i;
        cout << ans << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...