POJ-3664 Election Time
题目链接:POJ-3664 Election Time
题目大意:奶牛选拔老大 进行两轮选拔 输入一个n和k n代表有n个候选者 k代表第一轮选拔晋级牛数 下面n行数据 前一列数据代表每位候选者第一轮的票数 第二列数据代表第二轮的票数
问最后拿头牛被选中了
解题思路:最开始想的就是两遍排序 直接调用sort函数排序结构体 然后就直接过了???
还有耗时更短的解法 :自己写排序 针对一轮投票排序到前面k个数字均大于后面的数字即可 之后进行一遍遍历 找到二轮投票的票最多的即可(待解)
代码块:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct sss{
int first;
int second;
int index;
};
typedef struct sss cow;
cow cows[50005];
bool cmp1(cow o1, cow o2){
return (o1.first > o2.first);
}
bool cmp2(cow o1, cow o2){
return (o1.second > o2.second);
}
int main(){
int n,k;
scanf("%d %d",&n,&k);
for(int i = 1;i<=n;i++){
scanf("%d %d",&cows[i].first,&cows[i].second);
cows[i].index = i;
}
sort(cows+1,cows+n+1,cmp1);
sort(cows+1,cows+k+1,cmp2);
cout<<cows[1].index<<endl;
return 0;
}