#P5358. 区间乘积

    ID: 5676 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 2 上传者: 标签>教师测试基础组前缀和子序列枚举普及−分支结构

区间乘积

题目描述

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

  1. 子序列所有数相乘最后结果为0
  2. 子序列的长度为len

输入格式

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

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

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

输出格式

输出共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。

数据范围

对于60%的数据:n1000n \le 1000q1000q \le 10001LRn1 \le L \le R \le n1lenn1 \le len \le n

对于100%的数据:n100000n \le 100000q100000q \le 1000001LRn1 \le L \le R \le n1lenn1 \le len \le n100ai100-100 \le a_i \le 100