The best school
这道题有点难度,主要是对题目的理解不全面导致,
看见了输入样例,就想用Struct解决,但完全不会而且大材小用,
其实一个数组的定义就可以解决题中的核心变量 各学校的总分数,
每个参赛选手的学校和分数没有必要存储,
技巧:1.题目中明显的输入输出字样,可以写出对应函数
2.一直在变化的量有可能为核心解题点
#include<cstdio>
const int max =100000;
int school[max]={0}; //1.这两句等价于 int school[100000]={0} 2.把参赛人数的max=学校数,注意量的边界值
int main(){
int n,sid,score;
scanf("%d",&n); //输入参赛人数
for(int i=0;i<n;i++){ //所有参赛者输入参赛信息
scanf("%d %d",&sid,&score);
school[sid]+=score; //每所学校总成绩更新
}
int k=-1,MAX=-1 ; // 可能出现参赛队伍为0以及总成绩为0
for(int i=1;i<=n;i++){ //简单选择思想 (学校代码为1开始连续) (for循环的i具有局部性,故多个for嵌套可用一个i)
if (school[i]>MAX){
MAX=school[i];
k=i;
}
}
printf("%d %d\n",k,MAX);
return 0;
}
浙公网安备 33010602011771号