PAT_乙级训练记录 (B1032)

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 
        
    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]);
        }
    }
    

你可能感兴趣的:(PAT_乙级训练记录 (B1032))