#include <stdio.h>
int main()
{
int i,n,num,score,max_num,max_score=0;
int collect[100001]={0}; //要大于100000,坑啊
scanf("%d", &n);
for(i=0;i<n;i++) {
scanf("%d %d", &num, &score);
collect[num]+=score;
} //对输入数据预处理
for(i=1;i<=n;i++) {
if (collect[i]>=max_score) {
max_score=collect[i];
max_num=i;
}
} //找最大的分数
printf("%d %d", max_num,max_score);
}
1、10^5级别是绝对要对数据预处理的,就是输入的同时对数据进行处理,否则容易超时。(没必要将输入单独存一个数组)
2、输出一列数中最大的那个数。
3、此处不必用结构体。
4、定义的数组要大于100000,这里忽略了。
//或者考虑将两个循环 合并为一个,不过耗时由20ms变为39ms,emm。。。
#include <stdio.h>
int main()
{
int i,n,num,score,max_num,max_score=0;
int collect[100001]={0};
scanf("%d", &n);
for(i=1;i<=n;i++) {
scanf("%d %d", &num, &score);
collect[num]+=score; //对输入数据预处理
if (collect[num]>=max_score) {
max_score=collect[num];
max_num=num;
} //找最大的分数
}
printf("%d %d", max_num,max_score);
}