时间限制:1 秒
内存限制:128 兆
特殊判题:否
- 题目描述:
-
给你n个整数,请按从大到小的顺序输出其中前m大的数。
- 输入:
-
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
- 输出:
-
对每组测试数据按从大到小的顺序输出前m大的数。
- 样例输入:
-
5 3 3 -35 92 213 -644
- 样例输出:
-
213 92 3
#include <iostream> #include <iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> #define OFFSET 500000 using namespace std; int Hash[1000001]; int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=-500000; i<=500000; i++) { Hash[i+500000]=0; } for(int i=1; i<=n; i++) { int x; scanf("%d",&x); Hash[OFFSET+x]=1; } for(int i=500000; i>=-500000; i--) { if(Hash[OFFSET+i]==1) { printf("%d",i); m--; if(m!=0) { printf(" "); } else { printf("\n"); break; } } } } return 0; }
时间: 2024-10-20 19:56:41