#HX3720. map容器题二:注册系统

提交3 通过2
通过率66.7%
时间限制1000ms
内存限制128MiB

题目描述

题目描述

你接到了一个设计注册系统的任务,需要根据如下要求实现这个注册系统。

每当一个用户想要注册,他会向系统发送一个字符串 name 要求注册,如果这个 name 在系统数据库中不存在,那么就会将 name 插入到系统数据库中,并给用户返回 OK 表示注册成功。

如果 name 已经在系统数据库中存在,那么系统会生成一个新的用户名,将其插入数据库并返回给用户。

新的用户名按照如下规则生成:数字 ii11 开始,会一个接一个地添加到 name 后面,形成 name1name2……系统会找到一个最小的 iii1i\ge 1),使得 namei 不在数据库中,将 namei 作为生成的新用户名。

输入描述

第一行一个整数 nn1n1051\le n\le 10^5),表示有 nn 个注册请求。

接下来 nn 行,每行一个字符串 sis_i,表示用户向系统提交的用户名。

数据保证:1si321\le |s_i|\le 32,且 sis_i 仅由小写字母组成。

输出描述

输出 nn 行,如果用户名成功注册,输出 OK,否则输出系统返回给用户的用户名。

样例 1

4
abacaba
acaba
abacaba
acab
OK
OK
abacaba1
OK

样例 2

5
first
first
first
second
second
OK
first1
first2
OK
second1

说明提示

样例 #1:

abacaba 不存在,输出 OK,并插入到数据库中。

acaba 不存在,输出 OK,并插入到数据库中。

abacaba 在数据中存在,找到最小的数字 iii1i\ge 1),使得 abacabai 不存在,找到的为 11。输出 abacaba1,并插入到数据库中。

acab 不存在,输出 OK,并插入到数据库中。

样例 #2:

first 不存在,输出 OK,并插入到数据库中。

first 存在,找到最小的 iii1i\ge 1),使得 firsti 不存在,结果为 11。输出 first1,并插入到数据库中。

first 存在,找到最小的 iii1i\ge 1),使得 firsti 不存在,结果为 22。输出 first2,并插入到数据库中。

second 不存在,输出 OK,并插入到数据库中。

second 存在,找到最小的 iii1i\ge 1),使得 secondi 不存在,结果为 11。输出 second1,并插入到数据库中。