PAT乙级——1022挖掘机技术哪家强(20)
题目描述
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入描述:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号、及其比赛成绩(百分制),中间以空格分隔。
输出描述:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
【PAT乙级——1022挖掘机技术哪家强(20)】
输入例子:
6
3 65
2 80
1 100
2 70
3 40
3 0
输出例子:
2 150
我的思路: 首先定义一个结构体数组contest,里面存放的是学校编号和比赛成绩,并且在输入上述信息的过程中记录学校编号的最大值max_number。再定义一个结构体数据sum_用来存放所有编号number及其对应的成绩总和total。接着使用双层for循环结构,外层为从1到最大编号max_number的遍历,内层为contest中所有有效输入数据个数的遍历。将contest数据中所有number值相同的score值分贝对应地加起来,最后将学校编号number和成绩总和total放入结构体sum_中,用sort降序排列后输出第一项数据的编号number和成绩总和total。
代码:
#include
#include
using namespace std;
struct contest {
int number;
int score;
};
contest contest1[100001];
struct sum_ {
int total=0;
int number;
}sum[100001];
bool compare(sum_ &a,sum_& b)
{
return a.total > b.total;
}int main()
{
int N,max_number=0;
cin >> N;
for (int i = 0;
i < N;
i++)
{
cin >> contest1[i].number >> contest1[i].score;
if (max_number < contest1[i].number)max_number = contest1[i].number;
}
//cout << max_number;
for (int k = 1;
k <= max_number;
k++)
{
sum[k - 1].number = k;
for (int j = 0;
j
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术