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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章