Logo
(追記) (追記ここまで)

22148번 - Разбор строки 스페셜 저지다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB7000.000%

문제

При разработке алгоритмов и систем, занимающихся поиском в интернете, важную роль играет часть программы, отвечающая за разбор выражений. За время существования поисковых систем было придумано большое количество различных алгоритмов, решающих задачи этого класса. Они отличаются друг от друга временем работы, сложностью написания и количеством потребляемых ресурсов.

Рассмотрим задачу проверки того, состоит ли некоторая строка из слов, принадлежащих к некоторому словарю. Одним из самых простых алгоритмов, решающих эту задачу, является жадный алгоритм. Каждый раз из строки удаляется максимальный ее префикс, присутствующий в словаре как отдельное слово. На достаточно большом множестве строк, являющихся конкатенацией слов из словаря, этот алгоритм успешно завершает свою работу и разбивает строку на слова. Кроме того, этот алгоритм крайне прост в реализации. Однако, существуют и строки, на которых он выдаст неправильный результат. Например, если в качестве словаря взять список всех слов, существующих в английском языке, то строка «workingrass» не будет распознана корректно, так как сначала из нее будет удален префикс «working», а после этого остаток «rass» разбить на нужные слова уже невозможно. В то же время, эту строку можно представить как конкатенацию слов «work», «in» и «grass».

При разработке различных программ далеко не всегда приходится иметь дело со словарем английского языка. Иногда словари достаточно специфичны, и описанный алгоритм будет корректно разбивать всевозможные строки, являющиеся конкатенациями слов из словаря. Вам необходимо проверить, является ли набор слов (словарь) таким, и, если не является, привести пример строки, для которой разбиение на слова из словаря существует, но описанным алгоритмом оно не будет найдено. Если таких примеров несколько, необходимо найти кратчайший, то есть тот, длина которого не больше, чем у остальных. Если и таких несколько, выведите любой.

입력

Первая строка содердит одно целое число n (1 ≤ n ≤ 250) — количество слов в словаре. В следующих n строках перечислены слова, лежащие в словаре. Каждое слово непусто и состоит только из строчных букв латинского алфавита. Длина каждого слова не превышает 500 символов.

출력

Если строки, отвечающие описанным в условии требованиям, существуют, выведите любую из них, длина которой не превышает длины остальных. Выведенная вами строка должна состоять только из строчных символов латинского алфавита. В противном случае выведите «Good vocabulary!».

제한

예제 입력 1

3
ab
cd
abcd

예제 출력 1

Good vocabulary!

힌트

출처

Contest > Russian Code Cup > 2012 > RCC 2012 Elimination Round E번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /