题目描述
在推翻了 FJ 这个残暴的统治者后,奶牛们举行了她们的第一次总统大选,贝茜也是 N 头候选奶牛之一。不过,作为一头有远见的奶牛,贝茜想在选举开始前就计算出,哪头奶牛最有可能在竞争中胜出。选举分两轮进行。第一轮中,得票最多的 K(1<=K<=N)头奶牛晋级到下一轮,在第二轮选举中得票最多的奶牛成为最终的总统。
现在,贝茜告诉了你奶牛 i 在第一轮投票中的期望得票数 A 以及她在第二轮投票中的期望得票数B(如果奶牛 i 能成功晋级的话),她希望你帮她计算一下,如果这些数据无误,那么哪头奶牛将成为总统。任何数值都不会在A 列表中出现两次,在 B 列表中也是如此。
输入格式
第 1 行包含 2 个用空格隔开的整数:N 和 K; 第 2...n+1 行: 第 i+1为 2个用空格隔开的整数:A 和B。
输出格式
第 1行: 输出1 个整数,为将被选为总统的奶牛的编号。
样例
样例输入
5 3
3 10
9 2
5 6
8 4
6 5
样例输出
5
数据范围与提示
1<=N<=50000
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> point;
typedef struct{
int id;
point score;
}cow;
cow po[50000];
bool cmp1(cow a,cow b){
return a.score.first<b.score.first;
}
bool cmp2(cow a,cow b){
return a.score.second<b.score.second;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
po[i].id=i+1;
cin>>po[i].score.first>>po[i].score.second;
}
sort(po,po+n,cmp1);
sort(po+n-m,po+n,cmp2);
cout<<po[n-1].id;
return 0;
}