//1032
#include <iostream>
#include <map>
using namespace std;
int main(){
int n;
cin>>n;
map<int,int> m;
for(int i=0;i<n;i++){
int school,score;
cin>>school>>score;
m[school]+=score;
}
int max=m.begin()->second;
int team;
for(auto it=m.begin();it!=m.end();it++){
if(it->second>max){
team=it->first;
max=it->second;
}
}
cout<<team<<" "<<max;
return 0;
}
答案有错误,有两个测试过不了
将team赋值1后正确,原因可能是最高分是1号,不会执行下面的判断语句,所以team就没有值
下面是vector的做法
//代码是照抄liuchuo的
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> a(N + 1);
int num, score;
for (int i = 0; i < N; i++) {
cin >> num >> score;
a[num] += score;
}
int max = a[1], t = 1;
for (int i = 2; i <= N; i++) {
if (max < a[i]) {
max = a[i];
t = i;
}
}
cout << t << " " << max;
return 0;
}
[liuchuo](https://github.com/liuchuo/PAT/blob/master/BasicLevel_C++/1032.%20%E6%8C%96%E6%8E%98%E6%9C%BA%E6%8A%80%E6%9C%AF%E5%93%AA%E5%AE%B6%E5%BC%BA%2820%29.cpp)