1032.挖掘机技术哪家强

来源:互联网 发布:手机如何登陆淘宝卖家 编辑:程序博客网 时间:2024/04/20 22:58

参考了 http://blog.csdn.net/qq_34594236/article/details/51702557 的代码
(好吧其实基本一模一样捂脸哭)

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

输入格式:

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

输出格式:

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

输入样例:
6
3 65
2 80
1 100
2 70
3 40
3 0
输出样例:
2 150

#include<iostream>using namespace std;int main(){    int arr[100001] = {0};    int max = 0;    int n = 0;    int num,score;    cin >> n;    for(int i = 0;i<n;i++){        cin>>num;        cin>>score;        //这一句就是来自相同学校的分数相加        arr[num] = arr[num] + score;        if(arr[num]>arr[max]){            max = num;        }    }    cout<<max<<" "<<arr[max];    return 0;}

刚开始看题的时候,看到这种输入瞬间想到用结构体数组来做,然后做着做着就被自己困死在结构体里面了(果真刚学会用结构体数组太激动么,丢人= =)。
我开始思路是先全部输入,然后再让每个学校编号相同的分数相加,后面编号和前面编号相同的置为0,加一个判断,如果编号为0证明被加过了。然后在根据得分高低输出学校编号和成绩。我是在前面这步被卡住的,加完之后,没有办法再排成绩高低了= =而且这么做太麻烦了
然后找了别人的做法。
果真能一边输入一边处理的方法才是好方法啧啧啧……
这样用输入的学校编号做数组下标的方法好像不是第一次见了。
还有这个判断的方法,完全不用整个排序找大小,一边加一边比就好了,最后的肯定是最大的。
很好用,五分好评……(捂脸)

1 0
原创粉丝点击