题目描述
给定n个数字,找出前m大的数字。
输入
多组输入,每组输入格式如下。
第一行包含两个整数n m。(n<=100000, m>0)
第二行包含n个正整数。
输出
输出前m大的数字,若m>n输出ERROR。每组输出占一行。
示例输入
2 1 4 3 4 2 1 2 898989 23
示例输出
4 898989 23
- #include <stdio.h>
- int quicksort(int a[],int l,int r) //快排
- {
- int x=a[l],i=l, j=r;
- if(l>=r) return;
- 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;
- quicksort(a,l,i-1);
- quicksort(a,i+1,r);
- }
- int b[1000001];
- int main()
- {
- int i,j,n,m;
- while(scanf("%d %d",&n,&m)!=EOF)
- {
- for(i=0;i<n;i++)
- {
- scanf("%d",&b[i]);
- }
- quicksort(b,0,n-1);
- if(m>n)
- {
- printf("ERROR\n");
- }
- else
- {
- for(i=0;i<m;i++)
- {
- if(i==0)
- printf("%d",b[i]);
- else
- printf(" %d",b[i]);
- }
- printf("\n");
- }
- }
- return 0;
- }