1. 题目再现
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入格式:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例:
6
3 65
2 80
1 100
2 70
3 40
3 0输出样例:
2 150
2. 题目思考
题目还是较为简单,主要掌握一个点:
- 控制台输入内容转化为int数据
3. 实现方式
-
c++实现
#include <cstdio> int main() { int recordNum, num, score; scanf("%d", &recordNum); int recordDetail[recordNum] = {0}; for(int i = 0; i < recordNum; i++) { scanf("%d %d", &num, &score); recordDetail[num-1] += score; } int max = 0; for(int i = 0; i < recordNum; i++) { if(recordDetail[max] < recordDetail[i]) max = i; } printf("%d %d\n", max+1, recordDetail[max]); return 0; }
-
java实现(会超时,未知原因)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int recordNum = scanner.nextInt(); if(recordNum > 100000) return; int[] recordDetail = new int[recordNum]; for (int i = 0; i < recordNum; i++) { int num = scanner.nextInt(); int score = scanner.nextInt(); recordDetail[num - 1] += score; } int max = 0; for (int i = 0; i < recordNum; i++) { if (recordDetail[i] > recordDetail[max]) { max = i; } } System.out.println((max + 1) + " " + recordDetail[max]); } }
网友评论