#CF2123C. 前缀最小值与后缀最大值
前缀最小值与后缀最大值
C. 前缀最小值与后缀最大值
时间限制:2 秒
内存限制:256 兆字节
给定一个由互不相同的整数组成的数组 。
在一次操作中,你可以选择以下之一:
- 选择 的一个非空前缀,并将其替换为该前缀的最小值;
- 选择 的一个非空后缀,并将其替换为该后缀的最大值。
注意,你可以选择整个数组 。
对于每个元素 ,判断是否存在一系列操作,将 变换为 (即数组只包含一个元素,且该元素为 )。输出一个长度为 的二进制字符串,其中第 个字符为 表示存在这样的操作序列,为 表示不存在。
数组的前缀是由数组的前 个元素组成的子数组( 为某个整数)。
数组的后缀是由数组的后 个元素组成的子数组( 为某个整数)。
输入
第一行包含一个整数 ()—— 测试用例数。
每个测试用例的第一行包含一个整数 ()—— 数组 的长度。
第二行包含 个整数 ()。保证所有 互不相同。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一个长度为 的二进制字符串,其中第 个字符为 表示可以将 变换为 ,否则为 。
样例
输入
3
6
1 3 5 4 7 2
4
13 10 12 20
7
1 2 3 4 5 6 7
输出
100011
1101
1000001
说明
第一个样例:
- 先选择长度为 的前缀,数组变为 ;
- 再选择长度为 的后缀,数组变为 ;
- 最后选择长度为 的前缀,数组变为 。
因此可以将 变换为 。
可以证明无法将 变换为 。