# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
668201 | 1zaid1 | Zalmoxis (BOI18_zalmoxis) | C++17 | 564 ms | 96412 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;
vector<int> x;
for (int i:v) x.push_back(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++) {
vis[v1.size()] = true;
v1.push_back(i);
}
break;
} else {
int h = v.back();
int w = st.back();
if (h == w) {
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) {
v.pop_back();
st.push_back(h);
v1.push_back(h);
} else {
v.push_back(w);
}
}
} swap(v, x);
int j = 0;
for (int i = 0; i < v.size(); i++) {
while (v[i] != v1[j]) {
vis[j] = 1, j++;
}
j++;
}
while (j < v1.size()) vis[j++] = true;
vector<int> ans;
for (int i = 0; i < v1.size(); i++) {
ans.push_back(v1[i]);
k -= vis[i];
if (vis[i]&&k>0) {
while (ans.back()>0 && k > 0) {
k--;
ans.back()--;
ans.push_back(ans.back());
}
}
// cout << k << endl;
}
// for (int j=0;j<v1.size();j++) cout << vis[j]; cout << endl;
// for (int i:v) cout << i << ' '; cout << endl;
// for (int i:v1) cout << i << ' '; cout << endl;
for (int i:ans) cout << i << ' '; cout << endl;
return 0;
}
/*
5 1
29 27 25 25 28
1 5
29
*/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |