POJ 3664
来源:互联网 发布:dreamweaver做淘宝分类 编辑:程序博客网 时间:2024/04/30 07:00
这道题目的意思就是,给你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;}