题目:1800. 不做最后一个!
题解:先用map记录下每只牛的产奶量,然后再读出mp中的键值对到PII里,然后排序。找到第二小的位置,不存在or第二小的位置后面一个位置值和它一样,则输出Tie。否则输出对应的牛名字即可。
#include<bits/stdc++.h>
#define x first`在这里插入代码片`
#define y second
using namespace std;
typedef long long LL;
typedef pair<int ,string> PII;
const int N=1e5+10;
const int mod=100000007;
unordered_map<string ,int>mp={
{"Bessie",0},{"Elsie",0},{"Daisy",0},{"Gertie",0},
{"Annabelle",0},{"Maggie",0},{"Henrietta",0}
};
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
string s;
int t;
cin>>s>>t;
mp[s]+=t;
}
PII p[10];
int k=0;
for(auto i:mp){
p[k].x=i.y;
p[k].y=i.x;
k++;
}
sort(p,p+k);
int i=1;
while(p[i].x==p[i-1].x&&i<k) i++;
if(i>=k){
cout<<"Tie";
}else{
if(i+1<k&&p[i+1].x==p[i].x){
cout<<"Tie";
}else{
cout<<p[i].y;
}
}
return 0;
}