第X大的数

来源:互联网 发布:网络军事评论员 编辑:程序博客网 时间:2024/04/30 12:29

点击获取原题链接

第X大的数Time Limit: 1000MS Memory Limit: 65536KBProblem DescriptionX最近爱上了区间查询问题,给出N(N <= 200)个数,然后进行M次询问,每次询问时,输入一个数X(1<= X <= N),输出N个数中第X大的数。Input多组输入。每组首先输入一个整数N,代表有N个数,下面一行包含N个整数,用空格隔开。然后为一个整数M,代表有M次询问,下面的M行,每行一个整数X。Output输出N个数中第X大的数。Example Input41 2 2 341234Example Output3221HintAuthor zmx 
/***直接排序即可**********/#include <bits/stdc++.h>using namespace std;int a[200+10];void sort(int left,int right){    if(left>=right)return;///递归边界    int i=left;    int j=right;    int x=a[left];///快排枢纽    while(i<j)    {        while(i<j && a[j]<=x)j--;        a[i]=a[j];        while(i<j && a[i]>=x)i++;        a[j]=a[i];    }    a[i]=x;    sort(left,i-1);///递归左边    sort(i+1,right);}int main(){    int n;    while(cin>>n)    {        for(int i=0;i<n;i++)        {            cin>>a[i];        }        int m;        cin>>m;        sort(0,n-1);///手写快排  从大到小        while(m--)        {              int key;              cin>>key;              cout<<a[key-1]<<endl;        }    }}
0 0
原创粉丝点击