双关键字 优先级队列
按 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(); } }