题目描述
给定一个长度为 n 的整数序列 a1,a2,…,an 和一个整数 x。
你可以执行以下操作:选择两个相邻的数 ai 和 ai+1,并用一个整数 y 替换它们,满足
min(ai,ai+1)≤y≤max(ai,ai+1)
替换后,原来的 ai 和 ai+1 从序列中删除,序列长度减少 1,并重新编号为 1 到 n−1。
例如:
- 若 a=[1,2,4,5],你可以选择 a2=2 和 a3=4,用 y=3 替换它们,得到新的序列 [1,3,5]。
- 但你不能选择 a1=1 和 a2=2 并用 y=3 替换。因为 3>max(1,2),也不能选择 a1=1 和 a3=4(因为它们不是相邻的元素)。
显然,经过 n−1 次操作后,序列中只会剩下一个数。
问题是:是否存在一系列操作,使得最后剩下的这个数恰好等于 x。
输入格式
本题有多组数据
第一行输入一个整数 t 表示测试数据组数,对于每一组数据:
- 第一行输入一个整数 n 表示序列长度。
- 接下来输入 n 个空格隔开的整数表示 a1,a2,…,an。
- 第三行输入一个整数 x。
输出格式
输出一共输出 t 行,若剩余的一个数字可以等于 x 则输出 Yes,否则输出 No。
4
3
2 7 5
4
5
-1 3 7 -9 -2
8
6
1 -1 -4 5 1 -4
-2
4
1 0 -1 -1
0
Yes
No
Yes
Yes
样例 1 解释
在第一个测试用例中,你可以先选择 a2=7 和 a3=5,并将它们替换为 6。
此时序列变为 [2,6]。
接着你可以选择 a1=2 和 a2=6,并将它们替换为 4。
在第二个测试用例中,可以证明最终得到的数字永远不可能是 8。
数据规模与约定
对于 100% 的数据,1≤t≤5000,1≤n≤100,−109≤ai,x≤109。
本题采取捆绑测试
- 子任务 1 (30 分):n≤2。
- 子任务 2 (30 分):保证序列递增。
- 子任务 3 (40 分):无特殊限制。