[C/C++] 1032 挖掘机技术哪家强(20)(20 分)

1032 挖掘机技术哪家强(20)(20 分)


为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入格式:

输入在第1行给出不超过10^5^的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

输出格式:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例:

6
3 65
2 80
1 100
2 70
3 40
3 0

输出样例:

2 150

#include<stdio.h> 

int main()
{   
    int N;
    scanf("%d",&N);
    int num,grade;
    int school[100] = {0};
    while(N--){
        scanf("%d%d",&num,&grade);      
        school[num] += grade;
    }
    int q = 1,max = 0;
    for(int i=1;i<100;i++){
        if(school[i]>max){
            max = school[i];
            q = i;
        }
    }
    printf("%d %d\n",q,max);

    return 0;
 }

这样提交上去第四个测试点提示段错误,把数组放大到100000就可以了
完善了一下:遍历数组到N就好了,不用全部遍历

#include<stdio.h> 

int main()
{   
    int N;
    scanf("%d",&N);
    int num,grade;
    int school[100000] = {0};
    for(int i = 0;i<N;i++){
        scanf("%d%d",&num,&grade);      
        school[num] += grade;
    }
    int q = 1,max = 0;
    for(int i=1;i<=N;i++){
        if(school[i]>max){
            max = school[i];
            q = i;
        }
    }
    printf("%d %d\n",q,max);

    return 0;
 } 

猜你喜欢

转载自blog.csdn.net/dulongxiang/article/details/81560221