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

19991번 - Телефонные номера 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 512 MB126666.667%

문제

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

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

При отображении телефонного номера на экране телефона, части этого номера принято отделять друг от друга различными символами так, чтобы номер было проще прочитать и запомнить. Так, перед кодом страны обычно ставится символ <<+>>, код региона или оператора берется в скобки, номер абонента разделяется символами <<->> на несколько частей. При этом, то, на сколько частей он разбивается, напрямую зависит от количества цифр в нем:

  • если номер абонента состоит из трех цифр, то он представляет собой одну часть, состоящую из трех цифр;
  • если номер абонента состоит из четырех цифр, то он разбивается на две части, каждая из которых состоит из двух цифр;
  • если номер абонента состоит из пяти цифр, то он разбивается на две части, первая из которых состоит из трех цифр, а вторая --- из двух;
  • если номер абонента состоит из шести цифр, то он разбивается на три части, каждая из которых состоит из двух цифр;
  • если номер абонента состоит из семи цифр, то он разбивается на три части, первая из которых состоит из трех цифр, а все остальные --- из двух.

Естественно, что человек, заносящий новый номер в записную книжку своего телефона, не станет задумываться об этих правилах, а просто введет его как последовательность из 11 цифр. Однако, перед отображением номера на экране, программное обеспечение телефона должно выяснить, какая часть этого номера является кодом страны, какая --- кодом региона или оператора, а какая --- номером абонента, и отформатировать номер по правилам, описанным выше. Чтобы сделать эту задачу разрешимой, в память телефона записывается информация о том, какие в данный момент существуют коды государств и какие в этих государствах существуют коды операторов или регионов. Вам необходимо реализовать программу, которая, имея эту информацию, будет правильно форматировать номера, сохраненные в записной книжке телефона.

입력

Первая строка файла содержит одно целое число $n$ (1ドル \le n \le 100$) --- количество государств, информация про телефонные коды которых записана в память телефона. Далее следуют $n$ описаний этих государств, разделенных переводами строк.

Первая строка описания каждого государства содержит два целых числа $c$ и $k$ (1ドル \le c \le 999,ドル 1ドル \le k \le 100$) --- телефонный код этого государства и количество операторов или регионов, существующих в этом государстве. Следующие $k$ строк описания этого государства содержат целые числа, каждое из которых не меньше 100 и не больше 99999 --- коды операторов или регионов, зарегистрированных в этом государстве.

Следующая строка входного файла содержит одно целое число $m$ (1ドル \le m \le 10{,円}000$) --- количество телефонных номеров, которые необходимо отформатировать. Следующие $m$ строк содержат сами номера --- строки, состоящие ровно из 11 цифр.

Гарантируется, что ни один данный вам номер невозможно разбить на код государства, код оператора или региона и номер абонента более, чем одним способом.

출력

Выведите номера, данные вам во входном файле, отформатированными по правилам, описанным в условии. Каждый номер необходимо вывести в отдельной строке. Номера необходимо выводить в том же порядке, в котором они были перечислены во входном файле.

Вместо номеров, корректного разбиения которых на код государства, код оператора или региона и номер абонента не существует, необходимо вывести слово <<Incorrect>>.

제한

예제 입력 1

2
7 3
981
3517
812
351 3
34712
1234
963
8
79818266456
35196328463
78122472557
01234567890
73517960326
35134712239
35112342013
78120203040

예제 출력 1

+7(981)826-64-56
+351(963)284-63
+7(812)247-25-57
Incorrect
+7(3517)96-03-26
+351(34712)239
+351(1234)20-13
Incorrect

힌트

출처

Olympiad > Russian Olympiad in Informatics > Russia Team High School Programming Contest > Russia Team High School Programming Contest 2013 E번

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

출처

대학교 대회

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

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