Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2019, 18:11   #1
nematov_olimjon
Новичок
Джуниор
 
Регистрация: 28.10.2019
Сообщений: 1
Печаль Не могу решить вопрос из Codeforces! Помогите пожалуста

Можете объяснить как сделать это я попробовал создать массив String и сравнить таким образом:
for (int i=0; i<array.length; i++){
if (array[i] == array[i+1} // например
но не получается(((


В скором времени в Берляндии откроется новая почтовая служба "Берляндеск". Администрация сайта хочет запустить свой проект как можно быстрее, поэтому они попросили Вас о помощи. Вам предлагается реализовать прототип системы регистрации сайта.

Система должна работать по следующему принципу. Каждый раз, когда новый пользователь хочет зарегистрироваться, он посылает системе запрос name со своим именем. Если данное имя не содержится в базе данных системы, то оно заносится туда и пользователю возвращается ответ OK, подтверждающий успешную регистрацию. Если же на сайте уже присутствует пользователь с именем name, то система формирует новое имя и выдает его пользователю в качестве подсказки, при этом подсказка также добавляется в базу данных. Новое имя формируется по следующему правилу. К name последовательно приписываются числа, начиная с единицы (name1, name2, ...), и среди них находят такое наименьшее i, что namei не содержится в базе данных сайта.

Входные данные
В первой строке входных данных задано число n (1 ≤ n ≤ 105). Следующие n строк содержат запросы к системе. Каждый запрос представляет собой непустую строку длиной не более 32 символов, состоящую только из строчных букв латинского алфавита.

Выходные данные
В выходных данных должно содержаться n строк — ответы системы на запросы: ОК в случае успешной регистрации, или подсказку с новым именем, если запрашиваемое уже занято.

Примеры:

входные данные:
4
abacaba
acaba
abacaba
acab

выходные данные:
OK
OK
abacaba1
OK



входные данные:
6
first
first
second
second
third
third

выходные данные:
OK
first1
OK
second1
OK
third1
nematov_olimjon вне форума Ответить с цитированием
Старый 04.02.2020, 00:11   #2
NikiToZz_
Пользователь
 
Регистрация: 23.04.2016
Сообщений: 75
По умолчанию

Используй HashSet<String> для хранения строк. Сможешь проверять, существует ли передаваемая строка за О(1). Если не существует, просто закидывай туда. Если существует, проверяй в цикле i=1..105, конкатенируя каждый раз строку и счетчик, тем же алгоритмом. Ограничения маленькие, должно зайти прямо так
NikiToZz_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуста. Вопрос про видео память роман333 Компьютерное железо 1 26.11.2017 17:27
Помогите решить задачки на Паскале. Пожалуста, Очень срочно!!! VADOS2009-1 Помощь студентам 3 02.06.2009 23:32
Помогите пожалуста решить задачку, заранее спасибо Rakfeller Помощь студентам 3 22.05.2009 20:07