# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
668180 | 1zaid1 | Zalmoxis (BOI18_zalmoxis) | C++17 | 469 ms | 91004 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int M = 3e5+10;
signed main() {
cin.tie(0)->sync_with_stdio(0);
int n, k;
cin >> n >> k;
vector<int> v(n), v1;
for (int &i:v) cin >> i;
map<int, int> vis;
reverse(v.begin(), v.end());
vector<int> st; st.push_back(v.back());
v1 = {v.back()};
v.pop_back();
while (st.back() != 30) {
if (v.empty()) {
for (int i = st.back(); i < 30; i++) {
k--;
vis[v1.size()] = true;
v1.push_back(i);
}
break;
} else {
int h = v.back();
int w = st.back();
if (h == w) {
k--;
vis[v1.size()] = true;
v1.push_back(h);
v.pop_back();
while (st.size() && h == w) {
h = w+1;
st.pop_back();
if (st.size()) w = st.back();
} st.push_back(h);
} else if (h < w) {
k--;
v.pop_back();
st.push_back(h);
vis[v1.size()] = true;
v1.push_back(h);
} else {
v.push_back(w);
}
}
}
vector<int> ans;
for (int i = 0; i < v1.size(); i++) {
if (vis[i]&&k) {
int l = v1[i]-1;
for (int j = 1; l >= 0 && k > 1; j++, k--) {
ans.push_back(l--);
}
k--;
ans.push_back(l+1);
} else ans.push_back(v1[i]);
} for (int i:ans) cout << i << ' '; cout << endl;
return 0;
}
/*
5 1
29 27 25 25 28
*/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |