hdu 1425 sort

用了stl 的优先队列 priority_queue 比纯sort快一点点 375ms

#include <stdio.h>
#include <queue>
#include <vector>
using namespace std;
#define INF 999999999
#define eps 0.00001
#define LL __int64d


int data[1000010];
int data2[1000010];
int main()
{
    int i,n,m;
    priority_queue< int,vector<int>,greater<int> >hh;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&data[i]);
        }
        hh.push(data[0]);
        for(i=1;i<n;i++)
        {
            if(data[i]>hh.top()||hh.size()<m)
            {
                hh.push(data[i]);
            }
            if(hh.size()>m)
                hh.pop();
        }
        for(i=0;i<m;i++)
        {
            data2[i]=hh.top();
            hh.pop();
        }
        for(i=m-1;i>=1;i--)
        {
            printf("%d ",data2[i]);
        }
        printf("%d\n",data2[0]);
    }
    return 0;
}

你可能感兴趣的:(C++,STL)