题目描述
一个数组 b 被称为“好的数组”当且仅当可以将 b 划分为两个非空的子数组,这两个子数组中第一个子数组的 OR 结果与第二个子数组的 AND 结果相等,例如 {1,7,3,11},将其划分为 {1,3} 与 {7,11},1 OR 3=3,7 AND 11=3,所以它是一个好的数组。
现在给定一个长度为 n 的数组 a,q 组询问,每次给定 [l,r],为 {al,al+1,…,ar−1,ar} 是不是一个好的数组。
输入格式
第一行两个整数 n (1≤n≤105) 和 q (1≤q≤105)。
然后一行 n 个整数表示序列 a (0≤ai≤230−1)。
接下来 q 行,一行两个整数 l,r (1≤l≤r≤n),表示一组询问。
输出格式
对于每个询问,如果该子数组是好的输出 YES
,否则输出 NO
。
5 15
0 1 1 3 2
1 1
1 2
1 3
1 4
1 5
2 2
2 3
2 4
2 5
3 3
3 4
3 5
4 4
4 5
5 5
NO
NO
YES
YES
YES
NO
YES
YES
YES
NO
NO
YES
NO
NO
NO