HDU-1425(水题)
来源:互联网 发布:mysql怎么查看表空间 编辑:程序博客网 时间:2024/06/06 09:11
HDU-1425
Hash1 Sort
给你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++提交
做了一下午的多校再做这种水题很爽,正好 2017 Multi-University Training Contest - Team 3 1003,也是个求第k大的数,虽然那题没做出,思路也差很多,但
做这题是没问题的。hash1 sort 用哈希,效率问题,但搞不懂为什么排序也要用哈希,既然只要前m大的,那就先取m个数排下序,最小的找出,与下一个存的
数比较,比它大就存进去,用vector操作比较方便,最后排序,输出。
#include<iostream>#include<cstdio>#include<algorithm>#include<vector>using namespace std;const int N=1e6+10;bool cmp(int a,int b){ return a>b;}int main(){ int n,m,x; while(scanf("%d%d",&n,&m)!=EOF&&n&&m){ vector<int>v; v.clear(); for(int i=0;i<m;i++){ scanf("%d",&x); v.push_back(x); } sort(v.begin(),v.end(),cmp); for(int i=m;i<n;i++){ scanf("%d",&x); if(*(v.begin()+m-1)<x) v.push_back(x); } sort(v.begin(),v.end(),cmp); printf("%d",*v.begin()); for(vector<int>::iterator i=v.begin()+1;i!=v.begin()+m;i++){ printf(" "); printf("%d",(*i)); } printf("\n"); } return 0;}
阅读全文
0 0
- HDU-1425(水题)
- hdu 1425 sort (水题,计数法)
- HDU 1425--sort【水题】
- HDU 1800(水题!!! @@)
- HDU 1001(水题)
- HDU 1021(水题)
- HDU 1032(水题)
- HDU 1056(水题)
- HDU 1062(水题)
- HDU 1064(水题)
- HDU 1070(水题)
- HDU 1095(水题)
- HDU 1096(水题)
- HDU 1234(水题)
- hdu 2044 (水题)
- HDU--Elevator(水题)
- HDU-2055(水题)
- HDU 1425 sort (排序)
- 记录jsp开发中的问题
- web component 【Template】 创建自己的简单SPA应用
- HDU 6058 Kanade's sum
- CSU-ACM2017暑假集训比赛2 HDU
- 迟到的2017年上半年年中总结
- HDU-1425(水题)
- js定时器(三)向左向右
- Qt项目crash常见原因以及解决办法
- HDU 1070找最便宜的牛奶
- 一些弱智BUG
- Day15
- 函数修饰符标识
- 【JavaSE笔记】集合(三)_Set
- HDU