给出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 Find(int a[],int left,int right,int x)
{
int i=left;
int j=right;
int k=a[left];
while(i<j)
{
while(i<j&&a[j]<=k)
{
j--;
}
a[i]=a[j];
while(i<j&&a[i]>=k)
{
i++;
}
a[j]=a[i];
}
a[i]=k;
if(i==x)
return a[i];
else if(x>i)
return Find(a,i+1,right,x);
else if(x<i)
return Find(a,left,i-1,x);
}
int a[100000];
int main()
{
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int m,x;
scanf("%d",&m);
while(m--)
{
scanf("%d",&x);
printf("%d\n",Find(a,1,n,x));
}
return 0;

}