33OJ
登录 注册

#ABC481C. 银行账户

银行账户

银行账户

题目描述

在 Kowasugi 银行的后院里,幽灵们正在种南瓜。你决定为这些南瓜开设银行账户。

一个南瓜的账户在开设时会得到一个名字和一个 ID。ID 取为当时还没有被任何账户使用过的 最小正整数。

一开始,还没有任何南瓜账户。接下来依次发生 QQ 个事件,请按顺序处理它们。每个事件是:

  • 一个南瓜前来,报出自己的名字 ss;
  • 如果已经存在名字为 ss 的账户,输出这个账户的 ID;
  • 如果不存在名字为 ss 的账户,就用名字 ss 新开一个账户,并输出它的 ID。

输入格式

第一行一个整数 QQ。

接下来 QQ 行,第 ii 行是一个字符串 ss,表示第 ii 个事件中南瓜报出的名字。 ss 只由小写英文字母组成,长度在 11 到 1010 之间。

输出格式

输出 QQ 行。第 ii 行是第 ii 个事件中应当输出的 ID。

8
pumpkin
hobak
pompoen
hobak
pumpkin
boga
boga
hobak
1
2
3
2
1
4
4
2

样例 1 解释

事件依次进行:

  • 第 11 个事件:新开名字为 pumpkin 的账户,ID 为 11;
  • 第 22 个事件:新开名字为 hobak 的账户,ID 为 22;
  • 第 33 个事件:新开名字为 pompoen 的账户,ID 为 33;
  • 第 44 个事件:已经存在名字为 hobak 的账户,其 ID 为 22;
  • 第 55 个事件:已经存在名字为 pumpkin 的账户,其 ID 为 11;
  • 第 66 个事件:新开名字为 boga 的账户,ID 为 44;
  • 第 77 个事件:已经存在名字为 boga 的账户,其 ID 为 44;
  • 第 88 个事件:已经存在名字为 hobak 的账户,其 ID 为 22。
7
joayo
joayo
joayo
joayo
joayo
joayo
joayo
1
1
1
1
1
1
1

样例 2 解释

只有第一个事件会新开账户(名字为 joayo,ID 为 11),之后每个事件都只是输出已有账户的 ID。

数据范围

对于所有测试数据,保证:

  • 1≤Q≤2×1051 \le Q \le 2 \times 10^5;
  • 每个事件中的 ss 是由小写英文字母组成、长度在 11 到 1010 之间的字符串。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 Q≤2000Q \le 2000
7∼207 \sim 20 7070 无特殊限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。