比赛 HAOI2009 模拟试题4 评测结果 WWWWWWWWWA
题目名称 排序集合 最终得分 10
用户昵称 BYVoid 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2009-04-24 11:31:35
显示代码纯文本
/* 
 * Problem: HAOI2009 模拟4 sort
 * Author: Guo Jiabao
 * Time: 2009.4.24 11:12
 * State: Solved
 * Memo: 递推 + 模拟
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
const int MAXN=32;
using namespace std;
int N,K;
int F[MAXN],use[MAXN];
void init()
{
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	scanf("%d%d",&N,&K);
}
void dynamic()
{
	int i;
	F[0]=0;
	for (i=1;i<=N;i++)
		F[i]=(F[i-1]*2)+1;
}
void dfs(int l,int k)
{
	if (k==0 || l==0)
		return;
	int p=F[l-1]+1;
	if (k<=p)
	{
		use[N-l+1]=1;
		dfs(l-1,k-1);
    }
	else
		dfs(l-1,k-p);
}
void print()
{
	int i;
	for (i=1;i<=N;i++)
		if (use[i])
			printf("%d ",i);
}
int main()
{
	init();
	dynamic();
	if (K>1)
	{
		dfs(N,K-1);
	}
	else
		printf("0");
	return 0;
}