Submission #1243580

#TimeUsernameProblemLanguageResultExecution timeMemory
1243580fauntleroyZalmoxis (BOI18_zalmoxis)C++20
0 / 100
108 ms52652 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; for (int i = 0; i < n; ++i) { v.push_back(a[i]); while (v.size() > 1 && v[v.size() - 1] == v[v.size() - 2]) { v.pop_back(); ++v.back(); } } vector<int> dod; int s = *min_element(v.begin(), v.end()) - k + 1; dod.push_back(s); for (int i = 0; i < k - 1; ++i) dod.push_back(s++); vector<int> lo(n + 1), hi(n + 1); for (int i = 0; i <= n; i++) { int a1 = (i > 0 ? a[i - 1] : 30); int b = (i < n ? a[i] : -1); lo[i] = min(a1, b) + 1; hi[i] = max(a1, b) - 1; } vector<vector<int>> ok(31); for (int i = 0; i < n + 1; i++) { for (int x = lo[i]; x <= hi[i]; x++) { if (x >= 0 && x <= 30) ok[x].push_back(i); } } vector<int> ptr(31, 0); vector<vector<int>> m(n + 1); for (auto& x : dod) { int gi = ok[x][ptr[x]++]; m[gi].push_back(x); } for (int i = 0; i <= n; i++) { for (auto&e : m[i]) cout << e << ' '; if (i < n) cout << a[i] << ' '; } 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...