eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Досье

Досье

Інформація про кожного з учнів школи має вигляд: прізвище, ім'я, клас, дата народження. В залежності від ситуації, їх буває потрібно сортувати у різних порядках. Повний перелік стандартних порядків такий: \begin{itemize} \item {\tt surname} --- за прізвищем, ігноруючи ім'я; \item {\tt fullname} --- за прізвищем, а при однаковості прізвищ -- за іменем; \item {\tt birthyear} --- за роком народження, ігноруючи дату всер\emph{е}дині року, від менших дат (старших учнів) до більших дат (молодших учнів); \item {\tt birthdate} --- за датою народження, включаючи рік, від менших дат (старших учнів) до більших дат (молодших учнів); \item {\tt birthday} --- за днем народження, тобто вважаючи рівними однакові день і місяць різних років, від 01.01 до 31.12 (у~календарному смислі, в форматі {\tt дд.мм}); \item {\tt grade} --- за класом як номером року навчання, від 1 до 11, ігноруючи букву; \item {\tt class} --- спочатку за класом як номером року навчання, а при однаковості -- за буквою класу від {\tt A} до~{\tt Z}. \end{itemize} Причому, інколи буває потрібно застосовувати декілька порядків: спочатку один, при рівності за першим~--- другий, і~т.~д. Наприклад, "{\tt birthyear grade surname}" означає, що спочатку треба вивести всіх школярів, наприклад, 1998~р.~н., потім усіх 1999~р.~н., потім усіх 2000~р.~н., і так далі, причому серед школярів одного й того ж року народження проводити сортування за класами (як~роками навчання, ігноруючи букву), а~вже тих, у~кого однакові і~рік народження, і~клас без урахування букви, розташувати в~алфавітному порядку за прізвищами. \InputFile У першому рядку записаний необхідний порядок сортування, як одне або декілька зі слів {\tt surname}, {\tt fullname}, {\tt birthyear}, {\tt birthdate}, {\tt birthday}, {\tt grade}, {\tt class}. Хоча~б одне слово обов'язково присутнє; якщо слів декілька, то вони розділені одинарними пробілами; одне й те ж слово не~може згадуватися більше одного разу. У~другому рядку записана кількість учнів $N$ ($2\leqslant N \leqslant 12345$). Далі йдуть $N$ груп по~4~рядки кожна: (1)~прізвище~--- починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів; (2)~ім'я~--- починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів і пробілів; (3)~дата народження ({\tt дд.мм.рр}, тобто і~день, і~місяць, і~рік завжди задані рівно двома цифрами); (4)~клас~--- число від 1 до~11 і одна велика латинська літера, без пробілу між ними. Всі дати народження правильні (не~буває, наприклад, 30.02) і належать діапазону років від 1990 до 2030. Тобто, наприклад, $97<02$, бо насправді це 1997 і 2002. Здебільшого, учні старших класів мають раніші дати народження, ніж учні молодших, але можливі виключення. Більшість (не~менше~99,9\%) прізвищ та імен мають довжину до~20~символів, але щодо решти 0,1\% гарантовано лише~те, що їх сумарна довжина не~перевищує мільйон символів. Прізвища та імена гарантовано закінчуються або літерою, або апострофом (але~не~дефісом і не~пробілом). Прізвища з прізвищами та імена з іменами слід порівнювати стандартним для мов програмування регістрозалежним лексикографічним порівнянням рядків (навіть у випадку наявності дефісів, пробілів, тощо). \OutputFile Вивести $N$ рядків, у кожному з яких записані дані про одного з учнів, у форматі: клас, кома, пробіл, прізвище, кома, пробіл, ім'я, кома, пробіл, дата народження. Клас, прізвище, ім'я і дата народження мають бути байт-у-байт такими ж, як у вхідних даних. Рядки мають бути впорядкованими у відповідності до описаних в першому рядку вхідних даних порядком сортування. У всіх випадках, коли застосування вказаних порядків до вказаним даних залишає можливість різних правильних відповідей~--- виводьте будь-яку одну з правильних відповідей. Наприклад, якщо при вже згаданому порядку "{\tt birthyear grade surname}" в~деякому класі (році навчання) є однопрізвищники одного року народження~--- їх можна вивести в будь-якому порядку, але треба вивести кожного рівно один раз. \Examples \begin{example} \exmp{birthyear grade surname 8 Gonsales Anna Maria 5A 01.05.03 Ivanov Kyrylo 11A 12.01.97 Ivanov Ivan 3D 20.01.05 Ivanov Andrii 11B 23.12.97 Petrenko Nataliia 11B 23.08.97 Andrijchenko Kateryna 11B 07.02.98 Shevchenko Denys 10A 07.05.98 Smirnov-Kovalenko Yehor 9A 13.11.98 }{11A, Ivanov, Kyrylo, 12.01.97 11B, Ivanov, Andrii, 23.12.97 11B, Petrenko, Nataliia, 23.08.97 9A, Smirnov-Kovalenko, Yehor, 13.11.98 10A, Shevchenko, Denys, 07.05.98 11B, Andrijchenko, Kateryna, 07.02.98 5A, Gonsales, Anna Maria, 01.05.03 3D, Ivanov, Ivan, 20.01.05 }% \end{example} \Note \begin{enumerate} \item Відповідь, у якій {\tt Ivanov Andrii} та {\tt Ivanov Kyrylo} переставлені місцями, також є правильною. Інших, крім цих двох, правильних відповідей для цих вхідних даних не~існує. \item Мова C\# дотримується трохи іншого, чим більшість мов програмування, уявлення про стандартне регістрозалежне лексикографічне порівняння рядків, тому нею замість очевидного фрагмента {\tt p1.surName.CompareTo(p2.surName)} слід писати {\tt String.Compare(p1.surName, p2.surName, StringComparison.Ordinal)}, та аналогічно в решті випадків, де це важливо. \end{enumerate}
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
birthyear grade surname
8
Gonsales
Anna Maria
5A
01.05.03
Ivanov
Kirill
11A
12.01.97
Ivanov
Ivan
3D
20.01.05
Ivanov
Andrey
11B
23.12.97
Petrova
Natalia
11B
23.08.97
Andreeva
Ekaterina
11B
07.02.98
Shevchenko
Denis
10A
07.05.98
Smirnov-Kovalenko
Egor
9A
13.11.98
Выходные данные #1
===v===
11A, Ivanov, Kirill, 12.01.97
11B, Ivanov, Andrey, 23.12.97
===^===
===v===
11B, Petrova, Natalia, 23.08.97
===^===
===v===
9A, Smirnov-Kovalenko, Egor, 13.11.98
===^===
===v===
10A, Shevchenko, Denis, 07.05.98
===^===
===v===
11B, Andreeva, Ekaterina, 07.02.98
===^===
===v===
5A, Gonsales, Anna Maria, 01.05.03
===^===
===v===
3D, Ivanov, Ivan, 20.01.05
===^===
Источник 2014 ACM-ICPC Украина, 2ой Раунд Украина, Сентябрь 13, Задача K