#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
using namespace std;
signed main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for(auto& i : a) cin >> i;
vector<int> res;
function<int(int,int,int)> dfs = [&](int i, int l, int r)->int{
if(i < 0 || l > r) return 0;
int prev = l, sum = 0;
for(int j = l; j <= r; j++) {
if(a[j] == i) {
sum += dfs(i - 1, prev, j - 1) + 1;
prev = j + 1;
res.push_back(i);
}
}
sum += dfs(i - 1, prev, r);
if(i != 30 && sum % 2) {
res.push_back(i);
sum++;
k--;
}
return sum / 2;
};
dfs(30, 0, n - 1);
vector<int> out;
out.reserve(n + k);
function<void(int)> divide = [&](int i) {
if(!k || !i) out.push_back(i);
else {
k--;
divide(i - 1);
divide(i - 1);
}
};
for(int i = 0; i < res.size(); i++) {
divide(res[i]);
}
for(auto i : out) cout << i << " ";
cout << "\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |