Submission #756505

#TimeUsernameProblemLanguageResultExecution timeMemory
756505sheldonZalmoxis (BOI18_zalmoxis)C++14
95 / 100
132 ms12220 KiB
#include <bits/stdc++.h>

using namespace std;

void solve() {
    // ifstream cin ("zalmoxis.in");
    // ofstream cout ("zalmoxis.out");
    int n, k;
    cin >> n >> k;
    vector<int> st = {(int) 1e9};
    vector<int> a(n), ans;
    int done = 0;
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
        assert(a[i] <= 1e9);
        if (a[i] == st.back()) {
            st.push_back(a[i]);
            while (st.size() > 1 && st.back() == st[st.size() - 2]) {
                st.pop_back();
                st.back()++;
            }
        } else if (a[i] > st.back()) {
            while (a[i] > st.back()) {
                ans.push_back(st.back());
                st.push_back(st.back());
                ++done;
                while (st.size() > 1 && st.back() == st[st.size() - 2]) {
                    st.pop_back();
                    st.back()++;
                }
            }
            st.push_back(a[i]);
            while (st.size() > 1 && st.back() == st[st.size() - 2]) {
                st.pop_back();
                st.back()++;
            }
        } else {
            st.push_back(a[i]);
        }
        ans.push_back(a[i]);
    }
    while (st.size() != 2) {
        ans.push_back(st.back());
        st.push_back(st.back());
        ++done;
        while (st.size() > 1 && st.back() == st[st.size() - 2]) {
            st.pop_back();
            st.back()++;
        }
    }
    while (st[1] < 30) {
        ++done;
        ans.push_back(st[1]);
        st[1]++;
    }
    while (done != k) {
        ++done;
        int x = ans.back();
        ans.pop_back();
        ans.push_back(x - 1);
        ans.push_back(x - 1);
    }
    for (int x : ans) cout << x << ' ';
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...