现请你根据比赛结果统计出技术最强的那个学校。
输入描述:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始
连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出描述:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入例子:
6
3 65
2 80
1 100
2 70
3 40
3 0
输出例子:
2 150#include<iostream> #include<map> using namespace std; int arr[100000+1]={0}; void solve_1(){ int n; cin>>n; for(int i=0;i<n;i++){ int shoolNo; int score; cin>>shoolNo>>score; arr[shoolNo]+=score; } int maxIndex=0; int maxValue=0; for(int i=0;i<n;i++){ if(maxValue<arr[i]){ maxValue=arr[i]; maxIndex=i; } } cout<<maxIndex<<" "<<maxValue<<endl; return; } void solve_2(){ int n; map<int,int> map_count; cin>>n; map<int,int>::iterator p; for(int i=0;i<n;i++){ int schoolNo; int score; cin>>schoolNo>>score; p = map_count.find(schoolNo); if(p==map_count.end()) map_count[schoolNo]=score; else map_count[schoolNo]+=score; } int maxIndex=0; int maxValue=0; p = map_count.begin(); while(p!=map_count.end()){ if(p->second>maxValue){ maxValue=p->second; maxIndex=p->first; } p++; } cout<<maxIndex<<" "<<maxValue<<endl; } int main() { //solve_1(); solve_2(); return 0; }