sort排序

来源:互联网 发布:windows 组播编程 编辑:程序博客网 时间:2024/04/29 22:05

题目描述

给你n个整数,请按从大到小的顺序输出其中前m大的数。

输入格式

每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。

输出

对每组测试数据按从大到小的顺序输出前m大的数。

样例输入

5 2
-207693 190069 13569 -48891 -354975
20 6
-339148 446412 -322565 39597 -139187 108119 159993 218397 201075 174963 -149825 
137785 105930 -55557 -363362 268859 -139719 -425420 -269331 -333651

样例输出

190069 13569
446412 268859 218397 201075 174963 159993

#include<iostream>#include<string.h>#include<stdio.h>#include<ctype.h>#include<algorithm>#include<stack>#include<queue>#include<set>#include<math.h>#include<vector>#include<deque>#include<list>using namespace std;bool cmp(int a,int b){    return a>b;}int s[1000000];//这个数组要放在外面定义,放在主函数里光出现编译错误!一开始我就放里面去了,错了2次!//最后尝试了吧数组放外面就可以了int main(){    int n,m,i,j;    while(scanf("%d%d",&n,&m)!=EOF)    {        memset(s,0,sizeof(s));        for(i=0;i<n;i++)        scanf("%d",&s[i]);        sort(s,s+n,cmp);        for(i=0;i<m-1;i++)        printf("%d ",s[i]);        printf("%d\n",s[m-1]);    }    return 0;}


0 0