Submission #756458

#TimeUsernameProblemLanguageResultExecution timeMemory
756458sheldonZalmoxis (BOI18_zalmoxis)C++14
35 / 100
168 ms11256 KiB
#include <bits/stdc++.h> using namespace std; void solve() { // ifstream cin ("zalmoxis.in"); // ofstream cout ("zalmoxis.out"); int n, k; cin >> n >> k; vector<int> st = {(int) 1e9}; vector<int> a(n), ans; int done = 0; for (int i = 0; i < n; ++i) { cin >> a[i]; assert(a[i] <= 1e9); if (a[i] == st.back()) { st.push_back(a[i]); while (st.size() > 1 && st.back() == st[st.size() - 2]) { st.pop_back(); st.back()++; } } else if (a[i] > st.back()) { while (a[i] > st.back()) { ans.push_back(st.back()); st.push_back(st.back()); ++done; while (st.size() > 1 && st.back() == st[st.size() - 2]) { st.pop_back(); st.back()++; } } st.push_back(a[i]); while (st.size() > 1 && st.back() == st[st.size() - 2]) { st.pop_back(); st.back()++; } } else { st.push_back(a[i]); } ans.push_back(a[i]); } while (st.size() != 2) { ans.push_back(st.back()); st.push_back(st.back()); ++done; while (st.size() > 1 && st.back() == st[st.size() - 2]) { st.pop_back(); st.back()++; } } for (int it = st[1]; it < st[1] + k - done; ++it) { ans.push_back(it); } for (int x : ans) cout << x << ' '; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...