题号:NC26122
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
** 请注意此题内存限制与其他题目不同!**
Rikka 是一个乐于助人的女孩子,她经常帮助她的老师整理同学的成绩。
Rikka 所在的班级一共有 n 个人,在一次考试过后,Rikka 从老师那里得到了全班同学的成绩。
Rikka 按照学号帮助老师整理好了这些成绩,但是她的老师在给全班同学的成绩排名之后又提出了新的问题:他想要知道学号在 [l, r] 区间内同学中,在全班的排名在 [s, t] 区间内的人数。
这时候 Rikka 就傻眼了,因为她并不知道怎么做。
你能帮助 Rikka 解决这个问题吗?
请结合样例解释来更好地理解这个问题。
** 请注意:在本题中所有的“排名”指的是从小到大的排名。**
输入描述:
输入包含若干行。
第一行为两个整数 n 和 q,表示全班同学的人数和老师提出的询问个数。
第二行包含 n 个整数
,
表示学号为 i 的同学的成绩。
接下来有 q 行,每行包含 4 个整数 l, r, s, t,表示这一个询问中学号的区间 [l,r] 和排名的区间 [s, t]。
输出描述:
输出包含若干行。
对于每一个询问,输出一行一个整数,表示这个询问的答案。
示例1
输入
复制
5 3
93 92 95 94 81
1 5 2 3
2 5 1 3
2 4 3 5
说明
### 样例解释
容易发现,在这个样例中,所有人的排名分别为 3, 2, 5, 4, 1。
第一个询问求学号在 [1, 5] 区间中即所有同学中排名在 [2, 3] 中的人数,答案显然为 2。
第二个询问求学号在 [2, 5] 区间中排名在 [1, 3] 中的人数,其中,学号为 2 的同学排名为 2,学号为 5 的同学排名为 1,不符合要求,所以答案为 (5 - 2 + 1) - 2 = 2。
第三个询问求学号在 [2, 4] 区间中排名在 [3, 5] 中的人数,其中,学号为 2 的同学排名为 2 不符合要求,答案为 (4 - 2 + 1) - 1 = 2。
备注:
用 m 表示所有在询问中出现的不同的 s 和 t 的总个数。
对于所有的测试数据,保证
,
,
,
,
,
并且所有的
互不相同。
