noionline-2022-junior-0326

111 阅读1分钟

本人已参与[新人创作礼] 活动,一起开启掘金创作之路

有 n 个二元组 (ai , bi),编号为 1 到 n。

有一个初始为空的栈 S,向其中加入元素 (ai , bi) 时,先不断弹出栈顶元素直至栈空或栈顶元素

(aj , bj ) 满足 ai!=aj 且 bi < bj,然后再将其加入栈中。

如果一个二元组入栈后栈内只有这一个元素,则称该二元组是“成功的”。

有 q 个询问 [li , ri],表示若将编号在 [li , ri] 中的二元组按编号从小到大依次入栈,会有多少个二

元组是“成功的”。

询问之间相互独立。

【输入格式】

从文件 stack.in 中读入数据。

第一行两个正整数 n, q。

第二行 n 个正整数表示 ai。

第三行 n 个正整数表示 bi。

接下来 q 行,每行两个正整数 li , ri, 表示一组询问。

【输出格式】

输出到文件 stack.out 中。

q 行,每行一个自然数表示一组询问的答案。

【样例输入】

10 4

3 1 3 1 2 3 3 2 1 1

10 10 2 9 7 5 4 7 6 1

1 4

7 8

7 10

1 8

【样例输出】

3

2

2

3