sortTime Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 76053 Accepted Submission(s): 19980 Problem Description 给你n个整数,请按从大到小的顺序输出其中前m大的数。
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 Hint 请用VC/VC++提交
Author LL
Source
Recommend linle |
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1425
AC的C++代码
/* HDU - 1425 */
/* 桶排序 */
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 1e6;
const int M = 500000;
int a[N+1];
int main(void)
{
int n,m,c;
while(scanf("%d%d",&n,&m) != EOF){
memset(a,0,sizeof(a));
while(n--){
scanf("%d",&c);
a[c+M]++;
}
for(int i=0, j=N; i<m; j--){//注意这个循环的格式
while(a[j] && i<m){
if(i){
printf(" ");
}
printf("%d",j-M);
i++;
a[j]--;
}
}
printf("\n");
}
return 0;
}