题目1431:Sort

题目1431:Sort

时间限制: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;
}

 

posted @ 2016-07-19 23:34  多思考&&多动手  阅读(210)  评论(0编辑  收藏  举报