# 冒泡排序 ## 题目背景 对于一个排列 $a[1...n]$,进行一趟冒泡排序的代码为: ```cpp for(int i=1;ia[i+1]) swap(a[i], a[i+1]); } ``` 在进行 $n-1$ 趟冒泡排序之后,数组变为有序。 ## 题目描述 给一个长度为 $n$ 的排列 $a[1...n]$ 和 $q$ 次询问,每次询问形如 $(k,x)$:代表询问 $x$ 这个数在 $k$ 趟排序之后的位置下标。 ## 输入格式 第一行1个整数 $n$ 第二行 $n$ 个整数 $a[1...n]$,保证是一个排列 第三行1个整数 $q$ 接下来 $q$ 行,每行2个整数 $(k,x)$ 代表一次询问 ## 输出格式 输出 $q$ 行,每行1个整数代表答案 ## 样例 #1 ### 样例输入 #1 ``` 5 4 3 5 1 2 3 2 1 4 4 1 5 ``` ### 样例输出 #1 ``` 2 4 5 ``` ## 样例 #2 ### 样例输入 #2 ``` 5 4 5 2 3 1 5 3 1 4 2 3 3 2 4 1 5 ``` ### 样例输出 #2 ``` 2 2 3 4 5 ``` ## 样例 #3 ### 样例输入 #3 ``` 见下发样例 ``` ### 样例输出 #3 ``` ``` ## 提示 【样例1解释】 第1趟排序之后数组变为 $[3,4,1,2,5]$ 第2趟排序之后数组变为 $[3,1,2,4,5]$ 第3趟排序之后数组变为 $[1,2,3,4,5]$ 【数据范围】 对于20%的数据,$n,q\le 2000$。 对于另20%的数据,$n,q\le 10^5$,不同的 $k$ 取值不超过20种。 对于另20%的数据,$n,q\le 10^5$,不同的 $x$ 取值不超过20种。 对于另20%的数据,$n,q\le 10^5$。 对于100%的数据,$1\le n,q \le 5\times 10^5, 1\le k