# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
650780 | Matteo_Verz | Zalmoxis (BOI18_zalmoxis) | C++17 | 159 ms | 16432 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>
#ifdef BLAT
#include "debug/debug.hpp"
#else
#define debug(x...)
#endif
using namespace std;
bool removeElements(vector <int> &st) {
bool removed = false;
while (st.size() > 1 && st[st.size() - 1] == st[st.size() - 2]) {
removed = true;
st.pop_back();
st.back()++;
}
return removed;
}
void print(int n, int &k) {
if (n == 0 || k == 0) cout << n << ' ';
else {
k--;
print(n - 1, k);
print(n - 1, k);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector <int> v(1 + n);
for (int i = 0; i < n; i++)
cin >> v[i];
v[n] = 30;
vector <pair <int, bool>> finalv;
vector <int> st;
for (int i = 0; i <= n; i++) {
/*cerr << "st: ";
for (auto it : st)
cerr << it << ' ';
cerr << '\n';*/
if (st.size() && v[i] > st.back()) {
while (v[i] > st.back()) {
finalv.push_back(make_pair(st.back(), 1));
k--;
st.back()++;
removeElements(st);
}
}
if (st.size() && v[i] == st.back()) {
st.back()++;
removeElements(st);
} else st.push_back(v[i]);
removeElements(st);
finalv.push_back(make_pair(v[i], 0));
}
for (int i = 0; i < finalv.size() - 1; i++) {
if (finalv[i].second == 1) print(finalv[i].first, k);
else cout << finalv[i].first << ' ';
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |