九度oj-1431:sort.hash应用

来源:互联网 发布:软件企业评估证书 编辑:程序博客网 时间:2024/06/05 18:30
题目1431:Sort

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:11292

解决:3748

题目描述:

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

输入:

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

输出:

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

样例输入:
5 33 -35 92 213 -644
样例输出:
213 92 3
#include <iostream>#include <cstdio>#define OFFSET 500000//偏移量 用于补偿负值using namespace std;int hashtmp[1000001]; //记录是否出现int main(){    int n,m;    while(scanf("%d%d",&n,&m)!=EOF){        //初始化        for(int i=-500000;i<=500000;i++){            hashtmp[i+OFFSET]=0;        }        //读取数据        for(int i=0;i<n;i++){            int x;            cin>>x;            hashtmp[x+OFFSET]=1;        }        for(int i=500000;i>=-500000&&m;i--){            if(hashtmp[i+OFFSET]==1){                if(m!=1){                    cout<<i<<" ";                }else{                    cout<<i<<endl;                }                m--;            }        }    }    return 0;}
   注意:若使用sort函数排序的话会超时
原创粉丝点击