比赛 |
HAOI2009 模拟试题4 |
评测结果 |
AAAAAAAAAA |
题目名称 |
排序集合 |
最终得分 |
100 |
用户昵称 |
zqzas |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2009-04-24 11:25:55 |
显示代码纯文本
#include <iostream>
#define MAXN 51
int N,K,f[MAXN],ans[MAXN];
void dp(int n,int k)
{
if (k==1)
return;
int i;
k--;
for (i=1;i<=n;i++)
{
if (k<=f[n-i])
{
ans[++ans[0]]=i;
dp(n-i,k);
return;
}
k-=f[n-i];
}
}
void run()
{
dp(N,K);
}
void ini()
{
scanf("%d%d",&N,&K);
int i;
f[0]=1;
for (i=1;i<=N;i++)
f[i]=f[i-1]*2;
}
void output()
{
int i,last=0;
if (ans[0]==0)
printf("0");
else
for (i=1;i<=ans[0];i++)
{
printf("%d",ans[i]+last);
last=ans[i]+last;
if (i!=ans[0])
printf(" ");
}
}
int main()
{
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
ini();
run();
output();
return 0;
}