Это было обычное хмурое октябрьское утро. Небо было затянуто тяжёлыми серыми тучами, накрапывал
дождь. Капли падали на стёкла автомобилей, били в окна домов. Илья сидел за компьютером и угрюмо
взирал на унылый пейзаж за окном. Внезапно его взгляд привлекла надпись, появившаяся в правом нижнем
углу экрана: «You have 1 unread email message(s)». Заранее приготовившись удалить бесполезный спам,
Илья открыл письмо. Однако оно оказалось куда интереснее...
Вас приветствует отдел по работе с персоналом компании «Рутнок БКС»!
Мы рассмотрели вашу заявку на вакансию разработчика программного обеспечения и были заинтересованы
вашей кандидатурой. Для оценки ваших профессиональных навыков мы предлагаем вам выполнить несложное
тестовое задание: необходимо реализовать систему регистрации для форума. Она должна поддерживать
три операции:
- «register username password» — зарегистрировать нового пользователя с именем «username» и установить
для него пароль «password». Если такой
пользователь уже есть в базе данных, необходимо выдать ошибку «fail: user already exists». Иначе нужно
вывести сообщение «success: new user added».
- «login username password» — войти в систему от имени пользователя «username» с паролем «password».
Если такого пользователя не существует в базе данных, необходимо выдать «fail: no such user».
Иначе, если был введен неправильный пароль, нужно выдать «fail: incorrect password». Иначе, если
пользователь уже находится в системе в данный момент, необходимо вывести «fail: already logged in».
Иначе нужно вывести сообщение «success: user logged in».
- «logout username» — выйти из системы пользователем «username». Если такого пользователя не существует,
необходимо вывести «fail: no such user». Иначе, если пользователь не находится в системе в данный момент,
следует выдать «fail: already logged out». Иначе необходимо выдать сообщение «success: user logged out».
Пользуйтесь этим письмом как формальным описанием алгоритма и строго соблюдайте порядок обработки ошибок.
Желаем вам удачи!
И вот Илья, откинув все дела, уже решает тестовое задание. Попробуйте и вы выполнить его!
Исходные данные
В первой строке дано целое число n — количество операций (1 ≤ n ≤ 100). В каждой из следующих n строк
содержится один запрос в соответствии с форматом, описанным выше. В качестве «username» и
«password» могут выступать любые непустые строки длиной до 30 символов включительно. Строки могут состоять только
из символов с кодами от 33 до 126.
Результат
Для каждой операции выведите в отдельной строке сообщение в соответствии с форматом, описанным выше.
Строго соблюдайте расстановку пробелов и знаков препинания в этих сообщениях.
Пример
исходные данные | результат |
---|
6
register vasya 12345
login vasya 1234
login vasya 12345
login anakin C-3PO
logout vasya
logout vasya
| success: new user added
fail: incorrect password
success: user logged in
fail: no such user
success: user logged out
fail: already logged out
|
Автор задачи: Кирилл Бороздин
Источник задачи: Уральская региональная командная олимпиада по программированию 2013