#include <bits/stdc++.h>
using namespace std;
const int M = 31;
int cnt[M],us[M],ad[M];
vector<int> v1[M];
int main()
{
	int n,k;
	cin>>n>>k;
	int a[n];
	for (int i=0;i<n;i++)
		cin>>a[i],cnt[a[i]]++;
	for (int i=0;i<M-1;i++)
	{
		if ((cnt[i]+us[i])%2)
			ad[i]++,k--;
		us[i+1]=(cnt[i]+us[i]+ad[i])/2;
	}
	int pr=-1;
	for (int i=0;i<M;i++)
	{
		if (cnt[i]) pr=i;
		if (ad[i]) v1[pr].push_back(i);
	}
	for (int i=0;i<n;i++)
	{
		if (v1[a[i]].size())
		{
			vector<int> v=v1[a[i]];
			stack<int> st;
			while (k && v.size())
			{
				int x=v.back();v.pop_back();
				if (!x)
				{
					st.push(x);
					continue;
				}
				k--,v.push_back(x-1),v.push_back(x-1);
			}
			sort(v.begin(),v.end());
			reverse(v.begin(),v.end());
			for (int x:v)
				cout<<x<<' ';
			while (!st.empty())
				cout<<st.top()<<' ',st.pop();
			v1[a[i]].clear();
		}
		cout<<a[i]<<' ';
	}
	if (k)
		cout<<1/0<<endl;
	cout<<endl;
	
	return 0;
}
Compilation message (stderr)
zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:56:24: warning: division by zero [-Wdiv-by-zero]
   56 |                 cout<<1/0<<endl;
      |                       ~^~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |