题目描述
为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。请根据比赛结果统计出技术最强的那个学校。
输入格式
输入在第 1 行给出不超过 1 0 5 10^5 105的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例
6
3 65
2 80
1 100
2 70
3 40
3 0
输出样例
2 150
参考代码
#include <stdio.h>
#include <string.h>
#define SchNumMax 100
int main()
{
int schID,schSCOR,number;
int school[SchNumMax];
int schIDMax = 0,schSCORMax = 0;
scanf("%d",&number);
memset(school,0,sizeof(school)); //初始化school
for(int i=1;i<=number;i++)
{
scanf("%d %d",&schID,&schSCOR);
school[schID] += schSCOR;
}
for(int i=1;i<number;i++)
{
if(schSCORMax<school[i])
{
schIDMax = i;
schSCORMax = school[i];
}
}
printf("%d %d",schIDMax,schSCORMax);
return 0;
}
思路
- 令数组school[maxn]记录每个学校的总分,初值为0。对每一个读入的学校schID与其对应的分数score,令schoo[schID] += score。
- 令变量k记录最高总分的学校编号,变量MAX记录最高总分,初值为0。由于学校
是连续编号的,因此枚举编号1~number,不断更新schIDMax和schSCORMax即可。