第X大的数
来源:互联网 发布:fifaonline3刷球员软件 编辑:程序博客网 时间:2024/04/30 13:13
第X大的数
Time Limit: 1000MS Memory Limit: 65536KB
SubmitStatistic
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
3221
Hint
Author
zmx
#include <stdio.h>#include <stdlib.h>#include <string.h>int qort(int a[],int left ,int right){ int x=a[left],i=left,j=right; 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; return i;}int find_k(int a[],int left ,int right, int k){ int y; if(left<=right) { y=qort(a,left,right);///一次划分函数 if(y==k) return a[y]; if(y<k) return (find_k(a,y+1,right,k)); else return (find_k(a,left,y-1,k)); }}int main(){ int i,n,m,a[10001],k,x; while(~scanf("%d",&n)) { for(i=1; i<=n; i++) scanf("%d",&a[i]); scanf("%d",&m); while(m--) { scanf("%d",&k); x=find_k(a,1,n,k); printf("%d\n",x); } } return 0;}
0 0
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数
- 第X大的数 (sdut oj)
- 第x大的数 递归
- 第X大的数 (sdut oj)
- SDUT 2748 第X大的数
- 第X大的数(递归)STUT OJ
- 判断最大堆第k大的数与给定的数x的大小关系
- 第X大的数字
- 第K大的数
- 第k大的数
- 《剑指Offer》 二叉树的深度
- Discuz开发之function_core常用函数解析
- Java关键字
- 写给即将离开校园成为一名程序员的几句忠告
- Retrofit的基本post,get请求
- 第X大的数
- jsp隐含对象
- 信源编码第三次作业
- 《C++primer》第二章--变量和基本内置类型
- |Hdu 3746|KMP|Cyclic Nacklace
- 032遍历表单的所有控件
- Visual Studio 常用快捷键
- C++ STL/ (10) 阶段小结--容器的共性以及使用场景
- 使用baidu浏览器访问google