HDU 1425:sort

sort

Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38141    Accepted Submission(s): 11093


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
Hint
请用VC/VC++提交
 

Author
LL
 

Source
 

Recommend
linle   |   We have carefully selected several similar problems for you:  1108 1019 1170 1049 1280 
 

你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

#include<stdio.h>
#include<string.h>
#define MAX 1100000
long long int a[MAX];
int main()
{
    int n,m,i,t,k;
    while(~scanf("%d%d",&n,&m))
    {
        while(n--)
        {
            scanf("%d",&t);
            a[t+500000]=1;
        }
        t=MAX;
        for(i=0; i<m; i++)
        {
            for(;;)
            {
                if(a[t]==1)
                {
                    k=t-500000;
                    a[t]=0;
                    break;
                }
                else
                    t--;
            }
            if(i==0)
                printf("%d",k);
            else
                printf(" %d",k);
        }
        printf("
");
    }
    return 0;
}


原文地址:https://www.cnblogs.com/im0qianqian/p/5989595.html