제출 #617677

#제출 시각아이디문제언어결과실행 시간메모리
617677bebraCandies (JOI18_candies)C++17
100 / 100
113 ms10228 KiB
#include <bits/stdc++.h>
using namespace std;

#define dbg(x) cerr << #x << ": " << x << endl;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    vector<long long> a(n + 2);
    vector<int> l(n + 2);
    vector<int> r(n + 2);
    priority_queue<pair<long long, int>> pq;
    for (int i = 1; i <= n; ++i) {
        cin >> a[i];
        l[i] = i - 1;
        r[i] = i + 1;
        pq.emplace(a[i], i);
    }
    
    const long long MINUS_INF = -1e15;
    a[0] = MINUS_INF;
    a[n + 1] = MINUS_INF;

    l[n + 1] = n;
    r[0] = 1;

    long long curr_ans = 0;
    vector<bool> used(n + 2);
    for (int j = 1; j <= (n + 1) / 2; ++j) {
        auto [value, i] = pq.top();
        while (used[i]) {
            pq.pop();
            tie(value, i) = pq.top();
        }
        pq.pop();

        curr_ans += value;
        cout << curr_ans << '\n';

        a[i] = a[l[i]] + a[r[i]] - a[i];
        used[l[i]] = true;
        used[r[i]] = true;
        pq.emplace(a[i], i);

        l[i] = l[l[i]];
        r[l[i]] = i;

        r[i] = r[r[i]];
        l[r[i]] = i;
    }
    
    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...