Submission #1229891

#TimeUsernameProblemLanguageResultExecution timeMemory
1229891MuhammadSaramZalmoxis (BOI18_zalmoxis)C++20
5 / 100
142 ms2504 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...