【sort-多关键字排序】魔术师的排名
Description
周程远是一个魔术团的团长,他的手下有N个魔术师,编号分别为1~N中的某一个正整数,对于每个人都有不同的编号,他的魔力值为Wi,道具魔力值为Vi。现在,他想知道他手下第k强的魔术师的编号。排名规则如下:魔力值大者在前;当他们的魔力值相同时,对他们道具的魔力值进行比较,大者在前;若魔力值及道具魔力值均相同,则编号小者在前。
Input
第1行用空格隔开的2个正整数N,k,第2行至第N+1行每行三个整数,Ai,Wi,Vi,分别表示第i个人的编号,魔力值和道具魔力值。
Output
输出第k强的人的编号。
Hint
40%的数据满足1<=k<=N<=10^3;
100%的数据满足1<=k<=N<=10^5;
40%的数据满足0<=W,V<=10^9;
100%的数据满足-10^18<=W,V<=10^18;
my code:
#include <iostream>
#include <algorithm>
using namespace std;
class pep{
public:
long long ai;
long long wi;
long long vi;
};
bool cmp(pep a,pep b)
{
if(a.wi>b.wi)return true;
else if(a.wi==b.wi&&a.vi>b.vi)return true;
else if(a.wi==b.wi&&a.vi==b.vi&&a.ai<b.ai)return true;
else return false;
}
int main()
{
long long n,k;
cin>>n>>k;
pep m[n];
for(int i=0;i<n;i++)cin>>m[i].ai>>m[i].wi>>m[i].vi;
sort(m,m+n,cmp);
cout<<m[k-1].ai;
return 0;
}