#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |