您的位置:首页 > 其它

POJ3664 Election Time

2015-12-01 18:33 218 查看
水题,但我第一次写的代码WA了好几次,后来分析得:原来我用a[i]*1000+i来保留的做法进行快排时,a[i]相同时也会有大小之分,但题目数据检验时应该是按照普通快排排列的(随机),所以通过不了,后来改了一下结构体过了。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct fun
{
int x, y,num;
};
fun a[50005];

int cmp1(const void*p1, const void*p2)
{
struct fun*c = (fun*)p1;
struct fun*d = (fun*)p2;
return d->x - c->x;
}
int cmp2(const void*p1, const void*p2)
{
struct fun*c = (fun*)p1;
struct fun*d = (fun*)p2;
return d->y - c->y;
}

int main()
{
int n, k,i;
scanf("%d%d", &n, &k);
for (i = 0; i < n; i++)
{ //注意这里要从0开始,如果从1开始,快排会出错(出现0)
scanf("%d%d", &a[i].x, &a[i].y);
a[i].num=i;
}
qsort(a, n, sizeof(fun), cmp1);
qsort(a, k, sizeof(fun), cmp2);
printf("%d\n", a[0].num+1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: