CodeForces 4C Registration system

C. Registration system

time limit per test

5 seconds

memory limit per test

64 megabytes

input

standard input

output

standard output

A new e-mail service "Berlandesk" is going to be opened in Berland in the near future. The site administration wants to launch their project as soon as possible, that's why they ask you to help. You're suggested to implement the prototype of site registration system. The system should work on the following principle.

Each time a new user wants to register, he sends to the system a request with his name. If such a name does not exist in the system database, it is inserted into the database, and the user gets the response OK, confirming the successful registration. If the name already exists in the system database, the system makes up a new user name, sends it to the user as a prompt and also inserts the prompt into the database. The new name is formed by the following rule. Numbers, starting with 1, are appended one after another to name (name1, name2, ...), among these numbers the least i is found so that namei does not yet exist in the database.

Input

The first line contains number n (1 ≤ n ≤ 105). The following n lines contain the requests to the system. Each request is a non-empty line, and consists of not more than 32 characters, which are all lowercase Latin letters.

Output

Print n lines, which are system responses to the requests: OK in case of successful registration, or a prompt with a new name, if the requested name is already taken.

 Examples

input

Copy

4
abacaba
acaba
abacaba
acab

output

Copy

OK
OK
abacaba1
OK

input

Copy

6
first
first
second
second
third
third

output

Copy

OK
first1
OK
second1
OK
third1

题目大意:给你一些串,如果这个串没有出现过,那么输出OK,如果出现过则向后推,直到出现没有出现过这个串:

例如样例所描述

思路:直接map函数,然后判断出现的次数,如果为1则只出现一次,否则输出这个串,在输出出现的次数即可,如果模拟这个过程来做的话会一直超时,所以还是这种方法好。

代码:


/*

*/
#include<map>
#include<set>
#include <vector>
#include<stack>
#include<queue>
#include<cmath>
#include<string>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll unsigned long long
#define inf 0x3f3f3f
#define esp 1e-8
#define bug {printf("mmp\n");}
#define mm(a,b) memset(a,b,sizeof(a))
#define T() int test,q=1;scanf("%d",&test); while(test--)
const int maxn=2e5+10;
const double pi=acos(-1.0);
const int N=201;
const int mod=1e9+7;
map<string,int>ss;
int main()
{
    int n;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        string s;
        cin>>s;
       ss[s]+=1;
       int ans=ss[s];
       if(ans==1)
       {
           cout<<"OK"<<endl;
           continue;
       }
       else
       {
           cout<<s<<ans-1<<endl;
       }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/lee371042/article/details/89109754
4C: