B. Deque Process
问题描述
我们说一个大小为 的数组 是 坏的,当且仅当存在 使得以下条件之一成立:
一个数组是 好的,当且仅当它不是坏的。例如:
- 是坏的,因为 。
- 是坏的,因为 。
- 是好的。
你将得到一个排列* 。
你必须执行 轮操作。在每一轮中,你必须移除 中剩余元素的最左边或最右边的元素。设 是在第 轮被移除的元素。
选择在每一轮中移除哪个元素,使得最终得到的数组 是好的。我们可以证明,在给定的约束条件下,总是有解的。
*一个长度为 的排列是一个由从 到 的 个不同整数按任意顺序组成的数组。例如, 是一个排列,但 不是一个排列( 在数组中出现了两次), 也不是一个排列( 但数组中有 )。
输入
每个测试包含多个测试用例。第一行是测试用例的数量 ()。接下来是测试用例的描述。
每个测试用例的第一行包含一个整数 () — 数组的长度。
每个测试用例的第二行包含 个整数 (, 是两两不同的) — 排列的元素。
保证所有测试用例的 的总和不超过 。
输出
对于每个测试用例,你必须输出一个长度为 的字符串 。对于每个 ,在第 轮中:
- 表示你移除了 的最左边元素
- 表示你移除了 的最右边元素
我们可以证明答案总是存在的。如果存在多个解,输出任意一个即可。
题解
基本思想是在奇数轮移除左右元素的较小者,在偶数轮移除左右元素的较大者。
更多细节请参考官方题解。