X最近爱上了区间查询问题,给出N (N <= 100000) 个数,然后进行M (M <= 50) 次询问,每次询问时,输入一个数X (1 <= X <= N),输出N个数中第X大的数。
输入格式:
首先输入一个整数N,代表有N个数,下面一行包含N个整数,用空格隔开。然后为一个整数M,代表有M次询问,下面的M行,每行一个整数X。
输出格式:
输出N个数中第X大的数。
输入样例:
4
1 2 2 3
4
1
2
3
4
输出样例:
在这里给出相应的输出。例如:
3
2
2
1
参考代码:
#include <stdio.h>
int q[100005];
void sort(int q[], int l, int r)
{
if (l >= r)
return;
int x = q[l], i = l - 1, j = r + 1;
while (i < j)
{
do
i++;
while (q[i] > x);
do
j--;
while (q[j] < x);
if (i < j)
{
int t = q[i];
q[i] = q[j];
q[j] = t;
}
}
sort(q, l, j);
sort(q, j + 1, r);
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &q[i]);
sort(q, 0, n - 1);
int k;
scanf("%d", &k);
while (k--)
{
int a;
scanf("%d", &a);
printf("%d\n", q[a - 1]);
}
return 0;
}