Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 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_ вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840