Input每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
Output对每组测试数据按从大到小的顺序输出前m大的数。
Sample Input
5 3 3 -35 92 213 -644
Sample Output
213 92 3 思路:如果你用简单的选择排序或者冒泡排序都会超时的,sort时间复杂度nlogn,用着也方便,sort默认是升序,这里需要我们自定义为降序。具体为代码cmp部分。
1 #include<stdio.h> 2 #include <algorithm> 3 using namespace std; 4 int a[1000000]; 5 bool cmp(int a,int b)//定义为降序 6 { 7 return a>b; 8 } 9 void fun(int *a,int n,int m) 10 { 11 int i; 12 sort(a,a+n,cmp); 13 for(i=0;i<m;i++) 14 { 15 if(i==0) 16 printf("%d",a[i]); 17 else 18 printf(" %d",a[i]); 19 } 20 printf("\n"); 21 } 22 int main() 23 { 24 int n,m; 25 while(scanf("%d%d",&n,&m)!=EOF) 26 { 27 for(int i=0;i<n;i++) 28 { 29 scanf("%d",&a[i]); 30 } 31 fun(a,n,m); 32 } 33 return 0; 34 }
原文:https://www.cnblogs.com/yzlzm/p/12594470.html