#BZOJ3920. Yuuna的礼物
Yuuna的礼物
题目描述
转眼就要到Karin的生日了!Yuuna她们想为她准备生日礼物!现在有许多礼物被排列成了一个一维序列,每个礼物都有一个价值。Yuuna对这个序列十分感兴趣。因此,你需要多次回答:在某个区间内出现次数第k1少的价值是多少,可能多个不同的价值出现次数均为第k1少,输出其中第k2小的,保证输入合法。注意内存限制。
例如:对于一个区间而言(当然不一定是有序的):
1,2,3,4,5,5,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12
权值 出现次数
1 1 出现次数第1少 第1小
2 1 第2小
3 1 第3小
4 1 第4小
5 2 出现次数第2少 第1小
6 2 第2小
7 4 出现次数第3少 第1小
8 4 第2小
9 4 第3小
10 4 第4小
11 6 出现次数第4少 第1小
12 10 出现次数第5少 第1小
若k1=3,k2=2,代表询问这个区间里出现次数第3少的权值中第2小的,则应该输出8。
若k1=5,k2=1,代表询问这个区间里出现次数第5少的权值中第1小的,则应该输出12。
若k1=1,k2=3,代表询问这个区间里出现次数第1少的权值中第3小的,则应该输出3。
输入格式
第一行包括一个整数n,代表序列的长度。
第二行包括n个整数a1...an,代表该序列。
第三行包括一个整数m,代表询问的次数。
接下来m行,每行包括4个整数l,r,k1,k2,询问al...ar中出现次数第k1少的权值中第k2小的。
输出格式
对于每个询问,仅输出一行,包括一个整数,代表你的回答。
【输入样例1】
10
3 6 6 8 3 10 1 6 5 6
10
4 7 1 2
5 7 1 1
5 6 1 2
2 6 2 1
8 9 1 1
6 9 1 2
1 2 1 1
1 4 2 1
5 7 1 3
2 6 1 3
【输入样例2】
20
14 18 19 11 15 13 9 10 5 13 3 14 14 12 12 8 4 17 8 8
20
8 9 1 2
6 19 2 2
7 11 1 1
8 12 1 4
9 13 2 1
14 15 1 1
6 11 1 4
5 7 1 3
8 18 2 1
2 4 1 3
4 16 1 1
5 14 1 5
13 14 1 2
15 15 1 1
12 17 1 1
3 12 2 1
14 17 1 1
6 13 1 4
11 11 1 1
2 4 1 3
【输出样例1】
3
1
10
6
5
5
3
6
10
10
【输出样例2】
10
12
3
13
14
12
10
15
12
19
3
12
14
12
4
13
4
10
3
19
数据范围与约定
【数据范围】
1<=n<=40000,
1<=ai<=n (1<=i<=n),
1<=m<=40000,
1<=l<=r<=n,
保证k1,k2合法。