U502676 线段树上二分模版
题目描述
给出一段长度为 $n$ 的数列 $a$ 与 m 个询问,每组询问给出 $l,r,k$,询问在 $[ l , r ]$ 中从左往右数第一个**大于** $k$ 的数的位置(下标)。特别的,如果不存在这样的数,请输出 $-1$。
输入格式
第一行输入 $n,m$。
第二行输入 $n$ 个数 $a_i$。
接下来 $m$ 行,每行三个数 $l,r,k$ 表示一个询问。
输出格式
每行一个数,表示一个询问的答案。
说明/提示
数据范围 $1 \le n, m,k,a_i \le 2 \times 10^6$,$1 \le l \le r \le n$。、
第一个点 $O(n\log^2 n)$ 可以通过,第二个点需要 $O(n\log n)$。第三个点为 hack,若未通过,大概是未判断是被包含区间是否可行,导致时间复杂度退化为 $\operatorname O(n\log^2n) $。
数据输入输出量**极大**,将达到 30MB,注意**输入输出优化**。
update 2025.8.21 增加一个hack
数据文件为:https://pan.axianyu.cn/f/rmeuP/data.zip