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 了因为是全局变量吗
以后多级排序就靠他了,加油