[CEOI2002][POJ1037]A decorative fence

Grade Open Time Friday, 19 September 2014, 10:08 am
Discount 0.8 Time Discount Friday, 26 September 2014, 10:08 am
Allow late Yes Close Time Friday, 26 September 2014, 10:08 am
Input file decorative.in Output file decorative.out

题目描述:

N块长度分别为1N的木板,现在要将这N条木板排成漂亮的形状,所谓漂亮的形状,是指对于不在最边上的木板,两边相邻的木板要么都比它高,要么都比它低。N条木板有若干种漂亮的排列方法,现将这些排列按字典排序,即第一块木板较短的排前面,若第一条木板相同,则第二条木板较短的排前面,以此类推;最后,从1开始对这些排列方法编号。(如用3块木板可以排成132213312三个不同的序列,编号分别对应1à132;  2à2133à312),现输入木板块数N和编号C,要求按顺序输出这N条木板的长度。

输入:

输入文件的第一行包括一个整数K (1 <= K <= 100)表示输入数据的组数。

接下来是K行,每行表示一组输入数据。每行包括两个用空格分开的整数N C (1 <= N <= 20),N表示栅栏中木板的数目,C是这个栅栏在目录中的号码。

你可以这样设想,有20块木板的所有漂亮栅栏的编号可以用一个64位的无符号整数变量表示(long long in C/C++, int64 in FreePascal)。你还可以设想输入数据是正确的,特别是C最少为1而且不会超过有N块木板的漂亮栅栏编号。

输出:

每组数据只有一行输出,表示第有N木板的第C个栅栏的样子。这行序列的每个数用空格间隔。

样例输入:

2

2 1

3 3

样例输出:

1 2

2 3 1

提示:

来源:

CEOI2002