B. CSS

Имя входного файла: css.in
Имя выходного файла: css.out
Ограничение по времени: 2 s
Ограничение по памяти: 256 megabytes

Компания <<Dautroom>> производит ребрендинг. В ходе ребрендинга в компании был определён новый фирменный стиль, логотип и подобраны соответствующие цвета. Одна из задач в ходе ребрендинга – изменить все цвета на корпоративном сайте компании. К счастью, сайт сделан с применением каскадных таблиц стилей (CSS), поэтому изменение цветов на сайте сводится к правке CSS-файлов.

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

Каждый цвет, как в корпоративном стиле, так и в CSS-файле можно записать тройкой чисел (r, g, b), обозначающих интенсивность красного, зелёного и синего, соответственно 0 ≤ r, g, b ≤ 255. Для того, чтобы запись была более компактна, тройку чисел пишут без пробелов в шестнадцатеричном формате, то есть по два символа из набора 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F на каждое число. Также в CSS-файле для того, чтобы отличать обозначение цвета от обычного числа, перед ним пишут символ #. Таким образом, цвет, в котором 255 красного, 128 зелёного и 0 синего будет в CSS-файле выглядеть как #FF8000.

Вам будет выдан список цветов, допустимых в новом корпоративном стиле компании <<Dautroom>>, а также содержимое CSS-файла с сайта компании. Вам требуется заменить каждый цвет из CSS-файла на ближайший к нему цвет из корпоративного стиля. Расстояние между цветами c1 = (r1, g1, b1) и c2 = (r2, g2, b2) определяется по следующей формуле: D(c_1, c_2) = |r_1 - r_2| + |g_1 - g_2| + |b_1 - b_2|.

Если есть несколько цветов корпоративного стиля, находящихся на идентичном расстоянии от цвета из CSS-файла, требуется выбрать цвет с наименьшей компонентой r, если и таких несколько – требуется из них выбрать цвет с наименьшей компонентой g. Если и после этого цвет однозначно определить не удастся, нужно из оставшихся претендентов взять цвет с минимальной компонентой b.

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

Формат входного файла

В первой строке входного файла находится целое число N – количество цветов в новом фирменном стиле компании (1 ≤ N ≤ 100). Далее в N строках идёт по одному цвету в формате CSS-файла – цвета из фирменного стиля. Оставшаяся часть входного файла представляет собой содержимое CSS-файла, цвета в котором нужно заменить.

Гарантируется, что во входном файле встречаются только символы с кодами 10, 13 (перевод строки), 9 (табуляция), 32 (пробел) и кодами от 33 до 127 включительно. Гарантируется, что суммарная длина входного файла не превосходит 70 килобайт.

Формат выходного файла

Выведите содержимое CSS-файла, в котором все цвета заменены на ближайшие к ним по указанному выше алгоритму.

Пример:

css.incss.out
2 #FF0000 #00FF00 .header { font-weight: bold; color: #800000; background-color: #000000; } .header { font-weight: bold; color: #FF0000; background-color: #00FF00; }
3 #FF0000 #FFFF00 #FFFFFF .header { color : #FF8000 #FF0001 #00FF00; } .footer { color : #123456 #890ABC #111111; } .strange1 { colors : #1234567 #12345 #ABAGGG #abaaaa #ABAAAA } .header { color : #FFFF00 #FF0000 #FFFF00; } .footer { color : #FF0000 #FF0000 #FF0000; } .strange1 { colors : #FF00007 #12345 #ABAGGG #abaaaa #FFFFFF }

Во втором примере #1234567 состоит из описания цвета #123456 и символа 7, стоящего отдельно. Строка #12345 не является описанием цвета, так как описание цвета должно содержать 7 символов, включая #. Строка #ABAGGG не является описанием цвета, так как содержит символы G, не являющиеся шестнадцатеричными цифрами. Строка #abaaaa не является описанием цвета по условию задачи, несмотря на то, что с точки зрения CSS является корректным цветом.


Источник: Открытый зимний чемпионат ПетрГУ по программированию, 15 декабря 2013

Обсудить       Отправить решение