#P5358. 区间乘积

区间乘积

Description

说明

有一个整型数组a,数组中包含n个整数,有q次查询,每次查询包含一个区间左端点L,右端点R和一个整数len,要求根据每次查询输出能否从这个区间中选出来一个子序列(子序列是指从原序列中删除零个或多个元素后,不改变剩余元素的相对顺序所得到的新序列。例如,对于数组 [1, 0, -1]而言,[1, -1]、[0]、[1, 0, -1] 都是其子序列,而 [0, 1] 不是。),同时满足以下两个条件:

1.子序列所有数相乘最后结果为0

2.子序列的长度为len

输入格式

第一行输入两个整数n和q,分别代表数组的长度和查询次数。

第二行n个整数表示数组中的每一个数字。

接下来的q行,每行3个正整数L,R,len分别表示查询区间的左端点和右端点以及要求的序列长度。

对于60%的数据:n<=1000,q<=1000,1<=L<=R<=n,1<=len<=n。

对于100%的数据:n<=100000,q<=100000,1<=L<=R<=n,1<=len<=n。
对于所有的1<=i<=n , -100<=a[i]<=100

输出格式

输出共q行,如果第i次询问有满足条件的子序列存在,则第i行输出"YES",否则输出"NO"
6 3
-1 0 2 3 0 4
3 4 1
2 4 2
4 6 4
NO
YES
NO

提示

对于第一次询问,无论怎么样选择也没办法选择出来一个子序列,使其长度为1,并且乘积为0。

对于第二次询问,可以选择第2个数和第3个数组成一个子序列,这样乘积为0,并且子序列长度为2,两个条件都满足。

对于第三次询问,区间长度为3,不可能选择出来一个区间的子序列长度为4。