1032 挖掘机技术哪家强 (20 分)
题目:1032 挖掘机技术哪家强 (20 分)
为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入格式:
输入在第 1 行给出不超过 105 的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例:
6 3 65 2 80 1 100 2 70 3 40 3 0
输出样例:
2 150
思路:
- 将学校编号作为求和数组sum[100005]的下标,初始时将其数组的元素值全部初始化为0,每输入一个编号和分数就马上加入数组中进行求和。如果是该学校的总分为当前的最大值就将该学校的编号记录下来。
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <sstream> 5 #include <cmath> 6 #include <algorithm> 7 #include <string> 8 #include <stack> 9 #include <queue> 10 #include <vector> 11 #include <map> 12 using namespace std; 13 14 int main() 15 { 16 int n, id, score; 17 int sum[100005]; 18 int maxx = 0, flag = 0; 19 memset(sum, 0, sizeof(sum)); 20 scanf("%d", &n); 21 while(n--) 22 { 23 scanf("%d%d", &id, &score); 24 sum[id] += score; 25 // printf("sum[%d] = %d\n", id, sum[id]); 26 if(sum[id] > maxx) 27 { 28 maxx = sum[id]; 29 flag = id; 30 } 31 } 32 printf("%d %d", flag, maxx); 33 return 0; 34 }
总结:
刚开始没有选择直接在输入后就就进行求和,而是分开做,试运行程序后发现错误后才突然意识到其实可以直接上,还会简单不少。