#P7690. [CEOI2002] A decorative fence
[CEOI2002] A decorative fence
题目描述
理查德刚刚盖完他的新房子。现在房子唯一缺少的是一个可爱的小木栅栏。他不知道如何制作木栅栏,所以他决定订购一个。不知何故,他拿到了 ――可爱的小木栅栏的旗舰版资源(注:ACME 是一家什么都造的公司)。看完它的前言,他已经知道,什么使小木栅栏变得可爱。
一个木栅栏由 块木板组成,每块木板垂直排成一排。除此之外,当且仅当满足以下条件时,围栏看起来很可爱:
- 木板有不同的长度,即 为木板长度单位。
- 每块有两个相邻的木板,它要么比它的相邻的都大,要么比它相邻的都小。(即,这会使得围栏顶部交替上升和下降(高低起伏))。
因此,我们可以将每个用 块木板的可爱的栅栏唯一地描述为一个排列 (,)。反之亦然,每个这样的排列都描述了一个可爱的围栏。
很明显,可能有许多不同的可爱木栅栏由 块木板制成。ACME 的销售经理决定以下列方式排列可爱围栏并放入清单:栅栏 A(由排列 表示)在栅栏 B 之前(由 表示),当且仅当存在这样的 ,使得() 和 ()。(也就是说,比较两个围栏中哪个在清单中更早相当于取它们对应的排列,找出它们第一个不同的地方,并比较这个地方的值。)所有 块木板的可爱围栏都被按照它们在清单中出现的顺序编号(从 开始)。这个号码被称为他们的清单号。
仔细检查所有的可爱的小木栅栏后,理查德决定要它们中的一些。他记下木板的数量 和清单号 。后来,他遇到了他的朋友,他想向他们展示他围栏,但他失去了清单。他得到的唯一的事情是他的笔记。请帮助他查明,他的围栏将为何等样子。
输入格式
第一行包含一个整数 。接下来 行,每行描述一个输入数据集,每一行都包含两个以空格分割的整数 和 , 是围栏上木板的数量, 是围栏的栅栏的清单号。
输出格式
每个数据集输出一行,描述列表带有 个木板的第 个栅栏。更准确地说,如果栅栏排列 ,则输出的相应行应包含数字 (按正确顺序),由单个空格分隔。
2
2 1
3 3
1 2
2 3 1
提示
数据规模与约定
对于 的数据,,。你可以认为, 块木板的可爱小木栅栏的总数适合转换为 位有符号整数变量(C/C++ 中的 long long
,FreePascal 中的 int64
)。你也可以认为输入是正确的,特别是 最小是 并且它不超过有 块木板的可爱围栏的数量。
题目说明
来源于 CENTRAL-EUROPEAN OLYMPIAD IN INFORMATICS 2002 的 A decorative fence。
由 @求学的企鹅 翻译整理。