3598: 区间乘积的符号

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:6 解决:4

题目描述

小杨在学习数组的区间运算。他有一个长度为 n 的整数序列 a1,a2,,an

他将进行 q 次查询,每次查询给出一个区间 [l,r](包含端点),他想知道:

这个区间内所有数的乘积的符号是正、负还是零?

请你帮助他回答每个查询。

  • 如果乘积大于 0,输出 1
  • 如果乘积小于 0,输出 -1
  • 如果乘积等于 0(即区间内至少有一个 0),输出 0

⚠️ 注意:

  • 你不需要计算实际乘积(可能非常大)
  • 只需判断符号
  • 所有查询独立处理

输入

  • 第一行:两个整数 n 和 q1n,q105),表示序列长度和查询次数
  • 第二行:n 个整数 a1,a2,,an100ai100
  • 接下来 q 行:每行两个整数 l 和 r1lrn),表示一个查询区间(1-indexed)

输出

  • 对每个查询,输出一行一个整数:1-1 或 0,表示该区间乘积的符号

样例输入 复制

6 3
2 -3 4 0 -1 5
1 3
4 4
2 6

样例输出 复制

-1
0
0

提示

变量 范围 说明
n,q 1n,q105 数据量大,需高效算法
ai 100ai100 数值小,但乘积可能极大
l,r 1lrn 查询区间合法