AcWing 1800. 不做最后一个!
原题链接
简单
作者:
AcWindows
,
2022-05-10 12:47:06
,
所有人可见
,
阅读 179
C++ 代码
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
using namespace std;
map<string, int> mp = {
{"Bessie", 0}, {"Elsie", 0}, {"Daisy", 0}, {"Gertie", 0},
{"Annabelle", 0}, {"Maggie", 0}, {"Henrietta", 0}
};
int main() {
string s; int x;
vector<int> vc;
// 数据输入
int n; cin >> n;
for (int i = 0; i < n; i++) {
cin >> s >> x;
mp[s] += x;
}
// 数值排序(产奶量)
for (auto i : mp) vc.push_back(i.second);
sort(vc.begin(), vc.end());
// 节省空间,借用上面已产生的变量 x
// 查找第二小的数(数据已排序,第一小的数即为vc[0])
x = -1;
for (auto i : vc)
if (i != vc[0]) {
x = i;
break;
}
// 判断是否输出 Tie
int cnt = 0;
for (auto i : vc) if (x == i) cnt++;
if (cnt > 1 || x == -1) { // 有很多头奶牛满足这一条件,或者没有奶牛满足这一条件
cout << "Tie" << endl; // 输出
return 0;
}
// 输出
for (auto i : mp) if (x == i.second) cout << i.first << endl;
return 0;
}