codeforces 4C

题意:

每当一个新的用户想要注册账号的时候,他会把他想要注册的用户名告诉系统。如果这个系统里之前没有出现过这个用户名,那么这个用户名就会被导入数据库,从而注册成功。但是,如果这个用户名在数据库中已经存在,系统会自动帮助用户建立一个新的用户名,系统将在用户名的后面从1开始添加数字,一旦发现用户名没有注册过,就会帮助用户直接注册该账号(也就是如果用户想注册name这个用户名,但是系统已经有了,于是系统会自动查找name1是否注册,如果name1也注册了,那么检查name2是否注册,直到找到一个没有用过的用户名,帮用户自动注册)。

Input

输入第一行是一个正整数n,表示有n个用户想要注册。接下来n行,每行一个非空字符串(只由小写字母组成,长度不超过32)表示每个用户想要注册的用户名。1<=n<=10^5

Output

输出有n行,每行一个答案表示对应的用户注册的结果。如果直接注册成功,就输出OK,否则就输出系统帮助用户注册的用户名。

Input

4
abacaba
acaba
abacaba
acab

Output

OK
OK
abacaba1
OK

这个题很简单,对萌新很友好,就是利用STL中的map,每次输入一个name,就在map中查找,如果没找到就把name扔进去,否则利用map的映射输出新的用户名。

代码如下:

#include<cstdio>
#include<map>
#include<string>
#include<string.h>
#include<cstring>
#include<iostream>
using namespace std;
map<string,int>mp;
string name;
int n;
int main()
{
	cin >> n;
	map<string, int>::iterator j;
	for (int i = 1; i <= n; i++) {
		cin >> name;
		j = mp.find(name);
		if (j == mp.end()) {
			cout << "OK" << endl;
			mp[name] = 0;
		}
		else {
			mp[name]++;
			cout << name << mp[name] << endl;
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zsnowwolfy/article/details/83211073
4C:
今日推荐