善于总结acm

博客内容讲述了如何使用C语言实现一个算法,通过比较各场比赛中每道题目的解题人数来确定哪场比赛的难度最低。算法采用了qsort进行多级排序,首先比较第一题的解题人数,然后逐题比较,直到找出难度分配最简单的比赛。示例展示了输入输出格式,并解释了样例的判断逻辑。
摘要由CSDN通过智能技术生成

Description

最近acm队决定对近期举行的n场比赛做一总结,以研究哪几场比赛题目难度分配正常,但苦于任务艰巨没人想做,所以就找上你啦~~~ 

Input

 第一行为一个正整数n(0<n<100),接下来有n行。对于每一行有9个整数,第一个整数为比赛序号,接下来八个代表第1~8题的成功解题人数。 

Output

输出难度分配最简单的比赛的序号。若题号越小的题目解出的人数越多,则该比赛越简单。(当然和现实的acm赛有区别) 

Samples

input Copy

5 1 200 300 400 500 600 700 800 900 2 900 900 800 700 600 400 200 100 3 900 800 700 600 500 400 300 200 4 800 800 800 800 800 800 800 800 5 1 2 3 4 5 6 7 8

output Copy

2

Hint

1. 以样例为例

先看第一题,做出来最多的是2、3号比赛

继续看第二题,2号做出来的比3号多

所以答案是2号

2. 序号不一定是连续的,可以是任何int类型的整数。

//代码ac了的

#include <stdio.h>
#include <stdlib.h>
int comp(const void* p,const void* q);
typedef struct
{
    int x;
    int a;
    int b;
    int c;
    int d;
    int e;
    int f;
    int g;
    int h;
}paixu;
int main(void)
{
    int n;
    scanf("%d",&n);
    paixu p[100];
    for(int i=0;i<n;++i)
    {
        scanf("%d %d %d %d %d %d %d %d %d",&p[i].x,&p[i].a,&p[i].b,&p[i].c,&p[i].d,&p[i].e,&p[i].f,&p[i].g,&p[i].h);
    }
    qsort(p,n,sizeof(p[0]),comp);
    printf("%d\n",p[0].x);
    return 0;
}
int comp(const void* p,const void* q)
{
    paixu* pp=(paixu *)p;
    paixu* qq=(paixu *)q;
    if(pp->a!=qq->a)
        return qq->a-pp->a;
    else if(pp->b!=qq->b)
        return qq->b-pp->b;
    else if(pp->c!=qq->c)
        return qq->c-pp->c;
    else if(pp->d!=qq->d)
        return qq->d-pp->d;
    else if(pp->e!=qq->e)
        return qq->e-pp->e;
    else if(pp->f!=qq->f)
        return qq->f-pp->f;
    else if(pp->g!=qq->g)
        return qq->g-pp->g;
    else if(pp->h!=qq->h)
        return qq->h-pp->h;                        
}

//本人觉的这类题目全都可以用qsort来写,就是用结构定义一个comp

int comp(const void* p,const void* q)

struct paixu* pp=(struct paixu *)p;

struct paixu* qq=(struct paixu *)q;

有了前文的定义就可以在comp里访问struct 了因为是全局变量吗

以后多级排序就靠他了,加油
  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值