import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
String[] str;
int score[] = new int[10010];
int max_ID = 1;//从1开始
for (int i = 0; i < N; i++) {
str = bf.readLine().split(" ");
int ID = Integer.parseInt(str[0]);//记录编号
score[ID] += Integer.parseInt(str[1]);//累加相同编号的成绩
//比较不同编号下成绩大小并输出max
if (score[max_ID] < score[ID]) {
max_ID = ID;
}
}
System.out.println(max_ID + " " + score[max_ID]);
}
}
一道题查了大半天,最后一个测试点一直是段错误
,查了好多大佬的代码辅助修改都不行,最后看到了一篇数组开的极大,就尝试在原来开的数组上加一位,然后就通过了😅(太大也不行,四个测试点都会显示段错误
)
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
int ID;
long long score;
int max_ID=1;
int cscore[100101]={0};
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d %lld",&ID,&score);
cscore[ID]+=score;
if(cscore[max_ID]<cscore[ID])
max_ID=ID;
}
printf("%d %lld\n",max_ID,cscore[max_ID]);
}
看最后一个测试点跑的时间……
Java超时是必然的😔