POJ3664 Election Time

来源:互联网 发布:象过河软件视频教程 编辑:程序博客网 时间:2024/05/16 09:34

水题,但我第一次写的代码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;}
0 0
原创粉丝点击