1032.挖掘机技术哪家强

参考了 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证明被加过了。然后在根据得分高低输出学校编号和成绩。我是在前面这步被卡住的,加完之后,没有办法再排成绩高低了= =而且这么做太麻烦了
然后找了别人的做法。
果真能一边输入一边处理的方法才是好方法啧啧啧……
这样用输入的学校编号做数组下标的方法好像不是第一次见了。
还有这个判断的方法,完全不用整个排序找大小,一边加一边比就好了,最后的肯定是最大的。
很好用,五分好评……(捂脸)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值