您的位置:首页 > 其它

POJ 3664

2013-07-21 21:44 197 查看
这道题目的意思就是,给你N头牛,先按第一列排序,(如果第一列有相同的,就按第二列排序),然后对前K头牛先按第二列排序,(如果有相同的,就按第一列排序),得到票数最高的这头牛在原来一开始的标号是多少!输出来
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
const int maxn=50005;
using namespace std;
struct p
{
int a;
int b;
int pos;
}f[maxn];

int cmp1(p x,p y)
{
if(x.a==y.a)
{
return x.b>y.b;
}
else
return x.a>y.a;
}

int cmp2(p x,p y)
{
if(x.b==y.b)
{
return x.a>y.a;
}
else
return x.b>y.b;
}
int main()
{
int n,k;
int i;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=1; i<=n; i++)
{
scanf("%d%d",&f[i].a,&f[i].b);
f[i].pos=i;
}
sort(f+1,f+n+1,cmp1);
sort(f+1,f+k+1,cmp2);
printf("%d\n",f[1].pos);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: