程序设计训练3.9挖掘机技术哪家强
【问题描述】
为了用事实说明挖掘机技术到底哪家强,组织一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
【输入形式】
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号、及其比赛成绩(百分制),中间以空格分隔。
【输出形式】
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
【样例输入】
6
3 65
2 80
1 100
2 70
3 40
3 0
【样例输出】
2 150
【问题说明】
建议练习使用STL中的map
【思路说明】
本题主要就是利用map并对 map 进行排序,因为在 map 中的排序是基于 key 来排序的,所以无法对 value 直接进行排序,要借助 vector容器及 sort 函数。
【代码如下】
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const pair<int,int>a,const pair<int,int>b)
{
return a.second>b.second;
}
int main()
{
int n;
cin>>n;
int bh,score;
map<int,int>res;
for(int i=0;i<n;i++)
{
cin>>bh>>score;
res[bh]+=score;
}
vector<pair<int,int> > v(res.begin(),res.end());
sort(v.begin(),v.end(),cmp);//自定义排序
cout<<v[0].first<<" "<<v[0].second<<endl;
}