0
点赞
收藏
分享

微信扫一扫

不做最后一个(春季每日一题 18)

农夫约翰有 不做最后一个(春季每日一题 18)_最小值 头奶牛:Bessie,Elsie,Daisy,Gertie,Annabelle,Maggie,Henrietta。

他每天都给它们挤奶,并详细记录每次挤奶过程中每头牛的产奶量。

毫无疑问,产奶量大的奶牛会受到约翰的高度赞扬。

牛是一种懒惰的动物,并不愿意产出过多的牛奶。

对于它们来说,每头牛都十分乐意成为牛群中产奶量最低的奶牛。

然而,他们不断听到约翰和他的人类朋友提到“从农场到餐桌”这句话,虽然不知道是什么意思,但他们怀疑,实际上,奶牛产奶量最低并不是最好的主意。

取代这一想法的是,它们认为在牛群中产奶量第二低的位置相对来说更为安全。

请帮助奶牛们搞清楚哪头奶牛目前处在这个相对理想的位置。

输入格式
第一行包含整数 不做最后一个(春季每日一题 18)_最小值_02,表示共有 不做最后一个(春季每日一题 18)_最小值_02 条挤奶记录。

接下来的 不做最后一个(春季每日一题 18)_最小值_02 行,每行都包含一头奶牛的名字(上述七头之一),后跟一个正整数(不超过 不做最后一个(春季每日一题 18)_枚举_05),表示该头奶牛在一次挤奶过程中产生的奶量。

完全没有在记录中出现过的奶牛的产奶量视为 不做最后一个(春季每日一题 18)_#define_06

输出格式
在一行中输出产奶量第二低的奶牛的名字。

更准确的说,假设 不做最后一个(春季每日一题 18)_求第二小_07 是所有奶牛中产奶量的最小值,那么请输出所有产奶量超过 M 的奶牛中产奶量最小的那头奶牛的名字。

如果有很多头奶牛满足这一条件,或者没有奶牛满足这一条件(即所有奶牛的产奶量都为 不做最后一个(春季每日一题 18)_求第二小_07),请输出 ​​​Tie​​。

如果某头奶牛完全没有在挤奶记录中出现过,则 不做最后一个(春季每日一题 18)_枚举_09,因为那头奶牛根本就没有产奶。

数据范围
不做最后一个(春季每日一题 18)_#include_10

输入样例:

10
Bessie 1
Maggie 13
Elsie 3
Elsie 4
Henrietta 4
Gertie 12
Daisy 7
Annabelle 10
Bessie 6
Henrietta 5

输出样例:

Henrietta

样例解释
在此样例中,Bessie,Elsie,Daisy 的产奶量为 不做最后一个(春季每日一题 18)_最小值,并列产奶量最低,除了它们三个以外,产奶量最低的是 Henrietta,其产奶量为 不做最后一个(春季每日一题 18)_求第二小_12

#include<iostream>
#include<unordered_map>

#define x first
#define y second

using namespace std;

int n;
unordered_map<string, int> mp;

int main(){

cin >> n;

string s;
int x;
for(int i = 0; i < n; i++){

cin >> s >> x;
mp[s] += x;
}

int a1, a2;
a1 = 1e9;
a2 = 2e9;
for(auto &t: mp){

//if(!a1) a1 = t.y;
if(a1 < t.y && t.y < a2) a2 = t.y;
else if(t.y < a1) a2 = a1, a1 = t.y;
}

if(mp.size() < 7) a2 = a1, a1 = 0;

int cnt = 0;
for(auto &t: mp)
if(t.y == a2) cnt++, s = t.x;

if(cnt != 1) puts("Tie");
else cout << s << endl;

//cout << mp["Bessie"] << ' ' << mp["Annabelle"];

return 0;
}


举报

相关推荐

0 条评论