第X大的数

来源:互联网 发布:unicornviewer mac 编辑:程序博客网 时间:2024/04/30 12:38

Problem Description

X最近爱上了区间查询问题,给出N (N <= 100000) 个数,然后进行M (M <= 5) 次询问,每次询问时,输入一个数X (1 <= X <= N),输出N个数中第X大的数。

Input

多组输入。

每组首先输入一个整数N,代表有N个数,下面一行包含N个整数,用空格隔开。然后为一个整数M,代表有M次询问,下面的M行,每行一个整数X。

Output

输出N个数中第X大的数。

Example Input

41 2 2 341234

Example Output

322

1

#include<stdio.h>int find(int k,int left,int right,int a[]){    int i,j,mid;    i=left;    j=right;    mid=a[i];    while(i<j)    {        while(i<j&&a[j]<=mid)        {            j--;        }        a[i]=a[j];        while(i<j&&a[i]>=mid)        {            i++;        }        a[j]=a[i];    }    a[i]=mid;    if(i==k)    {        return a[i];    }    else if(i<k)    {        find(k,j+1,right,a);    }    else    {        find(k,left,j-1,a);    }}int main(){    int i,k,n,m;    int a[10000];    int b;    while(scanf("%d",&n)!=EOF)    {        for(i=0;i<n;i++)        {            scanf("%d",&a[i]);        }        scanf("%d",&m);        while(m--)        {            scanf("%d",&k);            b=find(k-1,0,n-1,a);            printf("%d\n",b);        }    }    return 0;}

0 0