原题描述:
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入格式:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例:6 3 65 2 80 1 100 2 70 3 40 3 0输出样例:
2 150把相同id存在一起,但是一开始想到的是排序,但是只需要找到最大的,不用全部输出所以不用全部排序一遍,直接找最大值就行。
#include <stdio.h>
int main ( )
{
int n, i , max = 0 ;
int id , score , a [ 100001 ] = { 0 } ;
scanf("%d",&n );
for ( i = 0 ; i < n ; i ++ )
{
scanf("%d %d",&id ,&score );
a [ id-1 ] += score;
}
for ( i = 0 ; i < n ; i ++ )
if ( a [ i ] > a [ max ] )
max = i ;
printf("%d %d",max+1, a [ max ] );
return 0;
}
之前没有给数组a赋初值,会有部分错误,输入为0时没有考虑到。