本来是用自己用的mpcount历遍mp来判断key是否存在,但是这样会导致第三个测试点运行超时,故用hash来用空间换时间 。
#include <cstdio>
#include <map>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
int hashtables[100001]={0};
bool mpcount(map<int,int> mp,int shuzi){
for(map<int,int>::iterator it=mp.begin(); it!=mp.end();it++){
if(it->first==shuzi) {
return 1; break;
}
}
return 0;
}
int main(){
map<int,int> mp;
int maxsco, n, maxsch, sco, sch;
scanf("%d",&n);
for(int i=0; i<n; i++){
scanf("%d %d", &sch, &sco);
if(hashtables[sch]!=0){
mp[sch]+=sco;
}else{
mp[sch]=sco;
hashtables[sch]=1;
// 本来是用自己用的mpcount历遍mp来判断key是否存在,但是这样会导致第三个测试点运行超时,故用hash来用空间换时间
}
}
for(map<int,int>::iterator it = mp.begin(); it!=mp.end();it++){
if(it==mp.begin()) {
maxsch=it->first;
maxsco =it->second;
}else{
if(it->second > maxsco){
maxsch=it->first;
maxsco =it->second;
}
}
}
printf("%d %d",maxsch,maxsco);
mp.clear();
return 0;
}
如需转载请私聊作者