c++题目_怎么又得数颜色

题目背景

这个暑假,小Z的空闲时间都在看2020东京奥运会。
看着看着,小Z想出了一个问题。

题目描述

小Z得到了一些国家的获奖信息,他想让你帮助他生成一下“奥运奖牌榜”。

获奖信息有很多行,每行包含两部分:第一部分是国家名,第二部分表示获奖是金牌、银牌还是铜牌。(国家名使用大写的三字母表示,金牌、银牌、铜牌分别使用GoldSilverBronze表示)

CHN Gold表示中国获得了一块金牌。

生成的奥运奖牌榜需要满足以下规则:

  • 按照第一关键字为金牌数量、第二关键字为银牌数量、第三关键字为铜牌数量的顺序从大到小排序。
  • 如果金银铜数量均相同,按照国家名英文字典序从小到大排序
  • 如果有超过10个国家,只需要输出奖牌榜的前10名。
  • 奥运奖牌榜第输出格式为,每个国家一行,每行为国家名,金牌数量,银牌数量,铜牌数量,奖牌总计。如CHN 34 24 16 74

输入格式

第一行一个整数n,表示获奖信息的行数。
接下来n行,每行两个空格隔开的字符串表示一条获奖信息,第一个字符串由三个大写字母组成表示国家名,第二个字符串为GoldSilverBronze之一,表示金、银、铜牌。

输出格式

输出包含最多10行,表示奥运奖牌榜。

每行为空格隔开的一个字符串与四个整数,表示国家名,金牌数量,银牌数量,铜牌数量,奖牌总计。

输入输出样例

输入 #1复制

5
CHN Gold
CHN Silver
USA Gold
USA Bronze
JPN Bronze

输出 #1复制

CHN 1 1 0 2
USA 1 0 1 2
JPN 0 0 1 1

输入 #2复制

5
CHN Gold
CHN Silver
CHN Bronze
USA Silver
JPN Silver

输出 #2复制

CHN 1 1 1 3
JPN 0 1 0 1
USA 0 1 0 1

说明/提示

数据范围与约束:

对于 30%的数据,满足n≤10n≤10;

对于 60%的数据,满足n≤1000n≤1000;

对于 90%的数据,满足n≤106n≤106;

对于 100%的数据,满足1≤n≤1071≤n≤107。

代码

#include <iostream>
#include <vector>
#include <unordered_set>

using namespace std;
int main() {
int n, m;
    
        cin >> n >> m;
    vector<int>ribbon(n);
    for  (int i = 0; i < n; i++) {cin >> ribbon[i];}
         for (int i =0; i <m; i++) {
int l, r;
                      cin>>l>>r;
         unordered_set<int> colors;
        for (int j=l-1;j<r;j++){   colors.insert(ribbon[j]);
     }
             cout << colors.size()<< endl;
}
    return 0;
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值