题目描述
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入描述:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始
连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出描述:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入例子:
6
3 65
2 80
1 100
2 70
3 40
3 0
输出例子:
2 150
注意:在提交时出现返回非零的错误则需要检查数组是否越界,若越界则将数组长度增大。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
int n=in.nextInt();
int [] array= new int [ 1024 * 1024 ];
for ( int i= 0 ;i<n;i++){
String[] str= new String[ 2 ];
str[ 0 ]=in.next();
str[ 1 ]=in.next();
int number=Integer.parseInt(str[ 0 ]);
int grade=Integer.parseInt(str[ 1 ]);
int count= 0 ; //为了防止当成绩为0时将数组中的数据清零的情况。
if (array[number]== 0 && count== 0 ){
array[number]+=grade;
++count;
continue ;
}
if (array[number]> 0 ){
array[number]+=grade;
++count;
continue ;
}
}
int max= 0 ;
int temp= 1 ;
for ( int i=temp;i<array.length;i++){
if (array[i]>max){
max=array[i];
temp=i;
} else {
continue ;
}
}
System.out.println(temp+ " " +max);
in.close();
}
}
|