#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... |