双关键字 优先级队列

按 f关键字 为 第一关键字 从大到小

按 b关键字 为 第二关键字 从小到大

 cmp 与 sort 的恰好相反....

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std;
int n,m,t;
struct node
{
    int b,f;    
};
struct cmp
{
    bool operator()(node &x,node &y)
    {
        if(x.f==y.f)
            return x.b>y.b;
        return x.f<y.f;
    }    
};
priority_queue<node,vector<node>,cmp >q;
void init()
{
    scanf("%d%d",&n,&m);
    t=(int)floor(m*1.5);
    for(int i=1;i<=n;i++)
    {
        int b,f;
        scanf("%d%d",&b,&f);
        node tmp;
        tmp.b=b;
        tmp.f=f;
        q.push(tmp);
    }
}
int main()
{
    init();
    while(!q.empty())
    {
        cout<<q.top().b<<' '<<q.top().f<<endl;
        q.pop();
    }
}