Submission #1269833

#TimeUsernameProblemLanguageResultExecution timeMemory
1269833glupanZalmoxis (BOI18_zalmoxis)C++20
95 / 100
84 ms10312 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, K;
    cin >> N >> K;
    int L = N + K;
    vector<int> S(N);
    for (int i = 0; i < N; ++i) cin >> S[i];

    deque<int> dq;
    dq.push_front(30);

    vector<int> result;
    result.reserve(L);

    int pos = 0;

    while ((int)result.size() < L) {
        int sum = (int)result.size() + (int)dq.size();
        if (pos < N) {
            int target = S[pos];
            if (dq.front() > target) {
                if (sum < L) {
                    int v = dq.front(); dq.pop_front();
                    dq.push_front(v - 1);
                    dq.push_front(v - 1);
                } else {
                    result.push_back(dq.front()); dq.pop_front();
                }
            } else if (dq.front() == target) {
                result.push_back(dq.front()); dq.pop_front();
                ++pos;
            } else {
                result.push_back(dq.front()); dq.pop_front();
            }
        } else {
            if (dq.front() == 0) {
                result.push_back(dq.front()); dq.pop_front();
            } else {
                if (sum < L) {
                    int v = dq.front(); dq.pop_front();
                    dq.push_front(v - 1);
                    dq.push_front(v - 1);
                } else {
                    result.push_back(dq.front()); dq.pop_front();
                }
            }
        }
    }
    for (int i = 0; i < L; ++i) {
        if (i) cout << ' ';
        cout << result[i];
    }
    cout << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...