1032 挖掘机技术哪家强
分数 20
作者 CHEN, Yue
单位 浙江大学
为了用事实说明挖掘机技术到底哪家强,
PAT 组织了一场挖掘机技能大赛。
现请你根据比赛结果统计出技术最强的那个学校。
输入格式:
输入在第 1 行给出不超过 10的5次方 的正整数 N,即参赛人数。随后 N
行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例:
6
3 65
2 80
1 100
2 70
3 40
3 0
输出样例:
2 150
题目分析
1、题目说最大输入行数10的5次方,可以先定义一个常量:
const int maxn=100010;
2、多行输入,输入:【学校的编号、及其总分】看起来是二维数组,其实是一维数组,因为学校的编号可以用数组的下标表示;
int school[maxn]={0}; //记录每个学校的总分
for(int i=0;i<n;i++){//循环输入
scanf("%d%d",&schID,&score);//学校ID、分数
school[schID]+=score;//学校schID的总分增加score
}
3、学校的编号会重复出现;学校成绩需要增加;
school[schID]+=score;
4、输出总分最高的,学校的编号、及其总分;
int k=1,MAX=-1;
for(int i=1;i<=n;i++){//从所有学校中选出总分最高的一个
if(school[i]>MAX){
MAX=school[i];
k=i;
}
}
5、两个for循环,需要注意i=0和i=1的意义;
当i=0是,i<n;
当i=1时,i<=n;
6、#include<cstdio.h>
stdio.h是以往的C和C++的头文件,cstdio是标准C++(STL)
7、碎碎念:
这题我没做出来,思路卡在
1、数组是二维数组;
2、想用while循环输入二维数组,结束语句不知道怎么写;
代码如下
#include<cstdio.h>
int main(){
//输入在第 1 行给出不超过 10的5次方的正整数 N
const int maxn=100010;
int school[maxn]={0}; //记录每个学校的总分
int n,schID,score;
scanf("%d",&n);
for(int i=0;i<n;i++){//循环输入
scanf("%d%d",&schID,&score);//学校ID、分数
school[schID]+=score;//学校schID的总分增加score
}
int k=1,MAX=-1;
for(int i=1;i<=n;i++){//从所有学校中选出总分最高的一个
if(school[i]>MAX){
MAX=school[i];
k=i;
}
}
printf("%d %d\n",k,MAX);//输出最高总分的学校ID及其总分
return 0;
}