HM270 三容器加映射

HM270 三容器加映射

HM270 三容器加映射

来源: 第 270 集 演讲比赛流程管理系统-容器的设计以及初始化操作

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

比赛前先设计容器。编号和具体选手要分开存:

  • v1vector<int>,第一轮参赛选手的编号;
  • v2vector<int>,第一轮晋级、也就是第二轮参赛的编号;
  • vVictoryvector<int>,决赛胜出的前三名编号。

这三个都可以合成「容器嵌套容器」的一个大容器,但拆开后每个名字职责更清楚。它们只存编号。选手本人放进 map<int, Speaker> m_Speaker:键是编号,值是选手。编号不会重复,所以用 map 即可,不必 multimap

再用 int m_Index 记下当前轮数,一共两轮。

封装 initSpeech:对 v1v2vVictorym_Speaker 都调用 clear(),并把 m_Index 置为 \(1\)。管理类的构造函数里要调用它,保证对象一创建就是空容器、轮数为 \(1\)。

读入若干操作,维护上述结构。编号与选手的绑定必须写进 map,查询姓名、分数时按编号查找。

输入格式

第一行一个整数 \(q\)(\(1 \le q \le 200\))。

接下来 \(q\) 行,每行一条操作:

  • INIT:调用 initSpeech,清空四个容器,轮数置 \(1\);
  • P1 id:把编号 id 追加进 v1
  • P2 id:把编号 id 追加进 v2
  • PW id:把编号 id 追加进 vVictory
  • BIND id name s0 s1insert 键值对,编号映射到姓名为 name、两轮分数为 \(s0,s1\) 的选手(同一编号后写覆盖前写,可用下标赋值);
  • SHOW:按输出格式打印当前状态。

编号是 \(10001\) 到 \(10012\) 的整数,姓名不含空白。

输出格式

对每次 SHOW 输出:

  1. INDEX、空格、当前轮数;
  2. V1、空格、v1 的全部编号(没有则该行只有 V1);
  3. V2、空格、v2 的全部编号;
  4. WIN、空格、vVictory 的全部编号;
  5. MAP、空格、m_Speaker.size()
  6. 随后按编号升序,每名选手一行:编号、姓名、两轮分数(一位小数)。

同一行多个编号之间一个空格。行末换行。

样例

输入 #1

8
BIND 10002 选手B 0 0
BIND 10001 选手A 0 0
P1 10001
P1 10002
P2 10001
SHOW
INIT
SHOW

输出 #1

INDEX 1
V1 10001 10002
V2 10001
WIN
MAP 2
10001 选手A 0.0 0.0
10002 选手B 0.0 0.0
INDEX 1
V1
V2
WIN
MAP 0

输入 #2

4
P1 10003
PW 10003
BIND 10003 选手C 88.5 90.0
SHOW

输出 #2

INDEX 1
V1 10003
V2
WIN 10003
MAP 1
10003 选手C 88.5 90.0

说明

构造之后就应处于 INIT 后的状态,因此一开始轮数是 \(1\)、四个容器皆空。map 按键排序,所以样例 1 先绑定 \(10002\) 再绑定 \(10001\),打印仍是 \(10001\) 在前。INIT 必须把映射一并清空。

信息

ID
1269
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者