Submission #1244699

#TimeUsernameProblemLanguageResultExecution timeMemory
1244699fauntleroyZalmoxis (BOI18_zalmoxis)C++20
0 / 100
156 ms59860 KiB
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <string> #include <algorithm> #include <numeric> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <queue> #include <cmath> #include <climits> #include <iomanip> #include <limits> #include <tuple> #include <stack> #include <bitset> #include <cstring> #include <sstream> #include <functional> #include <random> #define int long long using namespace std; void solve() { int n, k; cin >> n >> k; vector<int> a(n); for (auto& e : a) cin >> e; vector<int> v, pv; for (int i = 0; i < n; ++i) { v.push_back(a[i]); pv.push_back(i); while (v.size() > 1 && v[v.size() - 1] == v[v.size() - 2]) { v.pop_back(); pv.pop_back(); ++v.back(); } } vector<int> cnt(31, 0); for (auto& e : a) ++cnt[e]; vector<int> kol(31, 0); kol[30] = 1; int tot = 1; while (tot < n + k) { bool ok = 0; for (int x = 30; x > 0; --x) { if (kol[x] > cnt[x]) { --kol[x]; kol[x - 1] += 2; ++tot; ok = 1; break; } } } vector<int> dod; for (int i = 30; i >= 0; --i) { int p = kol[i] - cnt[i]; for (int j = 0; j < p; ++j) dod.push_back(i); } vector<int> ans; vector<vector<int>> ins(n + 1); for (auto& x : dod) { int p = 0; while (p < v.size() && v[p] > x) ++p; int id = (p < pv.size() ? pv[p] : n); ins[id].push_back(x); } for (int i = 0; i <= n; ++i) { for (int x : ins[i]) ans.push_back(x); if (i < n) ans.push_back(a[i]); } for (auto& e : ans) cout << e << ' '; cout << '\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...