#include <bits/stdc++.h>
using namespace std;
const int M = 31;
int cnt[M],us[M],lim[M];
int main()
{
	for (int i=1;i<M;i++)
		lim[i]=(1<<M-i-1);
	int n,k,x;
	cin>>n>>k;
	for (int i=0;i<n;i++)
		cin>>x,cnt[x]++;
	vector<int> ad;
	for (int i=0;i<M-1;i++)
	{
		if ((cnt[i]+us[i])%2)
			ad.push_back(i),cnt[i]++,k--;
		us[i+1]=(cnt[i]+us[i])/2;
	}
	while (k && ad.size())
	{
		int x=ad.back();ad.pop_back();
		if (!x) continue;
		cnt[x]--,us[x]++,k--,ad.push_back(x-1),ad.push_back(x-1);
		cnt[x-1]+=2;
	}
	for (int i=0;i<M;i++)
		while (cnt[i]--)
			cout<<i<<' ';
	cout<<endl;
	
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |