Cod sursa(job #374033)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 15 decembrie 2009 19:30:30
Problema Submultimi Scor Ascuns
Compilator cpp Status done
Runda Marime 0.71 kb
#include<stdio.h>
#include<cassert>
#define nmax 64
int n,t,nr;
int sol[nmax];
long long k,d[nmax];

void calc()
{
	int i;
	for(i=1;i<=n;i++)
		d[i]=(long long)1<<((long long)n-i);
}

void rez()
{
	long long x=0;
	int i;
	nr=0;
	for(i=1;i<=n && x<k;i++)
		if(x<k-d[i])
			x+=d[i];
		else
		{
			x++;
			sol[++nr]=i;
		}
}

int main()
{
	freopen("submultimi.in","r",stdin);
	freopen("submultimi.out","w",stdout);
	assert(scanf("%d%d",&n,&t)==2);
	assert(1<=n && n<=60);
	assert(1<=t && t<=1000);
	calc();
	int i,j;
	for(i=1;i<=t;i++)
	{
		assert(scanf("%lld",&k)==1);
		rez();
		assert(1<=nr && nr<=n);
		for(j=1;j<=nr;j++)
			printf("%d ",sol[j]);
		printf("\n");
	}
	return 0;
}