V (XVI) открытый командный студенческий чемпионат Поволжья по спортивному программированию
A. Чаепитие
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

Дракон рассказал Принцессе, что когда-то давно один знакомый Рыцарь поделился с ним рецептом очень вкусного чая, и с тех пор он, Дракон, стал пробовать составлять новые чаи. В этом очень вкусном чае он попытался заменить некоторые ингредиенты другими, а когда результат ему вновь понравился — записал новый рецепт. Так он поступал много раз, каждый раз выбирая в качестве основы один из уже записанных рецептов.

У Дракона своя система составления и записи рецепта чая. Он обозначил все используемые им ингредиенты строчными символами латинского алфавита (каждому ингредиенту соответствует свой символ). Таким образом, описание чая — это строка из m символов, записанных в том порядке, в котором соответствующие им ингредиенты перечислены в рецепте Дракона.

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

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

Ваша задача — по заданным описаниям n видов чая определить минимальное значение максимально возможного расстояния между рецептами, которое могло возникнуть в ходе их составления.

Входные данные

В первой строке содержатся целые числа n и m (2 ≤ n ≤ 1000, 1 ≤ m ≤ 30) — количество рецептов и количество ингредиентов в каждом рецепте.

В каждой из следующих n строк содержится по одному рецепту — строке из m символов. Гарантируется, что все рецепты различны.

Выходные данные

Выведите единственное целое число — минимальное значение максимально возможного расстояния между рецептами, которое могло возникнуть в ходе их составления.

Примеры
Входные данные
5 2
fb
ga
ef
dc
fd
Выходные данные
2
Примечание

Поясним приведённый пример.

Предположим, что рецептом самого вкусного чая был первый рецепт (fb). Несложно заметить, что расстояние до рецепта второго чая (ga) составляет единицу. Очевидно, что это минимально возможное расстояние между разными рецептами, и можно считать, что второй рецепт был получен непосредственно из первого.

Четвёртый рецепт (dc) отстоит от первого рецепта на расстояние 2; также на расстояние 2 от четвёртого рецепта отстоит пятый рецепт (fd). Можно полагать, что Дракон взял за основу первый рецепт, получил из него четвёртый, а затем из четвёртого — пятый.

Наконец, третий рецепт (ef) мог быть получен из пятого рецепта (fd); расстояние между ними составит 2.

Таким образом, Дракон может получить все перечисленные рецепты чая таким образом, что расстояние между рецептами никогда не будет превосходить 2.

B. Энергосбережение
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

За чаем Принцесса, как бы между прочим, полюбопытствовала — зачем такой добродушный и симпатичный Дракон заточил в своём замке Принца? Дракон загадочно улыбнулся и сказал, что это большой секрет. А немного помолчав, добавил:

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

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

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

Ваша задача — по заданному номеру месяца (от начала замен) и описанию комнат определить, в скольких комнатах уже произведена замена ламп и сколько ламп пока не нашло своего применения на конец этого месяца.

Входные данные

В первой строке содержатся целые числа n и m (1 ≤ n ≤ 1000,  1 ≤ m ≤ 100) — количество комнат в замке и количество ламп, которое ежемесячно приобретает Принц.

Во второй строке содержится n целых чисел k1, k2, ..., kn (1 ≤ kj ≤ 1000,  j = 1, 2, ..., n) — количество ламп в комнатах замка. Число, записанное на позиции #j, означает количество ламп в комнате #j согласно списку Принца.

В третьей строке содержится целое число q (1 ≤ q ≤ 105) — количество запросов.

В четвёртой строке содержится q целых чисел d1, d2, ..., dq (1 ≤ dp ≤ 105,  p = 1, 2, ..., q) — номера месяцев, для которых нужно дать ответ на вопрос задачи.

Месяцы нумеруются с 1; в начале первого месяца Принц приобретает партию ламп.

Выходные данные

Выведите q строк. В cтроке #p содержатся два целых числа — количество комнат, в которых уже выполнена замена ламп, и количество ламп, которые пока не нашли своего применения на конец месяца с номером dp.

Примеры
Входные данные
5 4
3 10 5 2 7
10
5 1 4 8 7 2 3 6 4 7
Выходные данные
4 0
1 1
2 3
5 1
5 1
1 5
1 9
4 4
2 3
5 1
C. Аэротакси
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дракон налил Принцессе ещё чашечку чая. Принцесса чуть заметно вздохнула и спросила:

— А принцессы и принцы в соседних замках — у них тоже договор аренды помещения?

— Конечно! — ответил Дракон, — Но с принцессами, по правде говоря, хлопотно. Так что все прогрессивные драконы стараются сдавать замки в аренду принцам. Впрочем, спрос на замки нынче невелик, приходится аэроизвозом подрабатывать.

Как рассказал Дракон, обитатели замков достаточно часто летают на драконах по разным делам. При этом они крайне не любят «пересекаться» друг с другом и требуют, чтобы по дороге их не видел никто из соседей. Так что диспетчеру, составляющему расписание полётов, приходится непросто.

Мы опишем упрощённую модель происходящего. Будем считать, что воздушное пространство поделено на n «воздушных коридоров». Эти коридоры занумерованы, и каждый из них располагается на определённой высоте: чем меньше номер коридора, тем он выше.

Дракон может начать полёт, заняв любой свободный коридор. Однако в ходе полёта дракон может только снижаться, притом только постепенно. Диспетчер требует, чтобы драконы осуществляли снижение только в целые моменты времени и только на один коридор вниз. Так, если дракон летит по воздушному коридору #j, он может переместиться в воздушный коридор #(j + 1) (если таковой существует). Если дракон занимает какой-либо воздушный коридор, он должен лететь в нём в течение хотя бы одной единицы времени.

В течение всего полёта дракон перемещается с постоянной горизонтальной скоростью, равной единице. Время перемещения между воздушными коридорами пренебрежимо мало и может быть положено равным нулю. Останавливаться в полёте дракон не может. У диспетчера имеется расписание, в котором для каждого воздушного коридора указано время, в течение которого этот коридор занят. Это время представлено множеством интервалов вида (s, f) (s < f); при этом считается, что в моменты времени s и f дракону будет разрешено занимать воздушный коридор, но ни в какие другие моменты времени между s и f он не может этого делать.

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

Ваша задача — определить, в какое время должен стартовать дракон, а также сообщить ему, в какие моменты времени он должен менять воздушный коридор (если, конечно, в этом будет необходимость).

Входные данные

В первой строке содержатся целые числа n и t (1 ≤ n ≤ 100,  1 ≤ t ≤ 10000) — количество воздушных коридоров и длительность полёта дракона.

Каждая из следующих n строк содержит описание занятости воздушного коридора. Это описание состоит из целого числа cj (0 ≤ cj ≤ 100) — количества промежутков времени, в которые занят воздушный коридор #j и собственно перечисления этих промежутков времени. Каждый промежуток состоит из двух целых чисел s(j)k и f(j)k (k = 1, 2, ..., cj), записанных через пробел. При этом 0 ≤ s(j)1 < f(j)1 < s(j)2 < ... < f(j)cj ≤ 109).

Дракон, сделавший заявку на полёт, готов стартовать в любой момент времени, начиная с 0.

Выходные данные

В первой строке выведите целое число a — наиболее ранний момент времени, в который дракон может вылететь.

Во второй строке выведите целые числа h и d — воздушный коридор, с которого дракон начнёт свой полёт и количество перемещений между воздушными коридорами в ходе полёта.

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

Если существует несколько вариантов решения, выведите любое из них.

Примеры
Входные данные
2 8
2 0 4 10 20
2 5 10 12 15
Выходные данные
4
1 1
10
Входные данные
5 8
2 0 2 5 10
2 0 4 7 10
1 4 6
2 0 3 5 10
2 0 5 8 10
Выходные данные
0
3 2
3 5
Входные данные
4 9
1 5 9
2 0 4 5 8
2 0 4 5 8
2 0 4 9 12
Выходные данные
8
2 0
Примечание

Поясним приведённые примеры.

В первом примере можно начать полёт в момент времени 4 в первом коридоре, а затем в момент времени 10 спуститься во второй коридор. Полёт завершится в момента времени 12.

Во втором примере полёт можно начать в момент времени 0 в третьем коридоре. В момент времени 3 можно переместиться в четвёртый коридор, в момент времени 5 — в пятый коридор.

В третьем примере самый ранний момент времени, в который можно начать полёт — 8. Действительно, из первого коридора можно было бы переместиться во второй в момент времени 4 и находиться там до момента времени 5. Но перейти в третий коридор уже не получиться: находиться в третьем коридоре после момента времени 5 нельзя. Таким образом, в момент времени 8 можно начать полёт во втором или третьем коридоре и не менять коридор до конца полёта.

D. Драконовские меры
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— А как же рыцари, которые спасают принцесс? Они тоже понарошку? — Принцесса выглядела грустной.

— Ну... если принцесса и рыцарь понравились друг другу, зачем же мешать этому? — Дракон успел проникнуться симпатией к Принцессе, и ему было жаль, что он огорчил её.

Вообще-то Дракон полагал, что классик, утверждавший, что «все счастливые семьи похожи друг на друга», был определённо прав. Он уже давно подсчитал, что в сумме принцев в окрестных замках и рыцарей ровно n. А это столько же, сколько и принцесс — если сложить тех, кто проживает в замках, и тех, кто ищет своё счастье, странствуя. И, по его мнению, надо просто правильно перезнакомить их друг с другом.

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

А когда списки будут составлены — поделить всех на пары. При этом каждый человек в паре должен быть уверен, что все, кто нравился ему больше, чем тот, кто оказался с ним рядом, оказались в паре с теми, кто нравился им больше него. Будем называть набор пар раскладом и (в этом случае) будем говорить, что расклад является устойчивым.

Поясним это более формально. Рассмотрим две пары (m1, f1) и (m2, f2). Предположим, что m2 желал бы видеть своей парой f1 более, чем f2 (т.е. в списке m2 номер f1 меньше, чем f2). Однако f1 полагает, что m1 лучший выбор, нежели m2 (т.е. в списке f1 номер m1 меньше, чем m2).

Если бы это было не так, то расклад устойчивым считать было бы уже нельзя: ведь m2 и f1 могли бы стремиться друг к другу.

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

Конечно, Дракон уже думал об этом раньше и пришёл к выводу, что для каждого возможного расклада можно ввести характеристику «недовольство». Мерой «недовольства» конкретного человека он считает номер его партнёра в паре в его списке. А мерой «недовольства» расклада — максимальный среди всех таких номеров.

Ваша задача — по заданным спискам предпочтений найти (устойчивый) расклад с минимально возможным «недовольством».

Входные данные

В первой строке содержится целое число n (1 ≤ n ≤ 200) — количество участников пар с каждой стороны.

В каждой из следующих n строк содержатся предпочтения очередного принца (или рыцаря) — некоторая перестановка чисел от 1 до n.

В каждой из следующих n строк содержатся предпочтения очередной принцессы — также некоторая перестановка чисел от 1 до n.

Считайте, что принцы и рыцари, равно как и принцессы, занумерованы в порядке их упоминания во входных данных.

Выходные данные

В первой строке выведите единственное целое число — минимально возможную меру «недовольства» в раскладе.

Во второй строке выведите собственно расклад — n целых чисел pj, где pj —номер принцессы, которая должны оказаться в паре с принцем (рыцарем) #j.

Если существует несколько решений, выведите любое из них.

Примеры
Входные данные
4
3 4 1 2
3 2 4 1
4 2 1 3
2 1 3 4
3 1 2 4
2 3 4 1
2 3 1 4
4 2 3 1
Выходные данные
3
1 3 4 2
Примечание

Поясним пример. Покажем, что полученный расклад устойчив.

Рассмотрим пару (1, 1). Для первого партнёра его текущий выбор имеет #3 в его списке, и он был бы рад встречаться с 3 или (если уж 3 не пожелает) с 4. Для второго партнёра его текущий выбор имеет #2 в его списке, и он был бы рад встречаться с 3.

В паре (2, 3) оба партнёра являются друг для друга наилучшим выбором (имеют номер #1 в списке другого партнёра) и не желают встречаться с кем-либо ещё.

В паре (3, 4) первый партнёр уверен в своём выборе (это #1 в его списке), а вот второй партнёр был бы готов сменить 3 на 4 или (если 4 не захочет) 2.

В паре (4, 2) ситуация, похожая на ситуацию в предыдущей паре. Первый партнёр не хотел бы ничего менять, а второй — готов уйти к 2 или (при несогласии 2) к 3.

Посмотрим, каковы перспективы описанных выше желаний.

Первый партнёр из (1, 1) может обратиться к 3, но 3 состоит в паре (2, 3) и ничего менять не хочет. Если же он обратится к 4, то 4 (состоящий в паре (3, 4), хотя и готов сменить своего текущего партнёра, не имеет при этом в виду 1. Второй партнёр может обратиться к 3 (опять же из пары (3, 4)), но не будет иметь успеха: с точки зрения 3, у него сейчас лучший выбор.

Второй партнёр из пары (3, 4) хотел бы сменить текущего партнёра, но желанные для него 4 и 2 сделали лучший выбор.

Второй партнёр из пары (4, 2) также будет отвергнут желанными для него 2 и 3 (из пар (2, 3) и (3, 4) соответственно).

Максимально недовольными в сложившихся парах являются первый партнёр из пары (1, 1) и вторые партнёры из пар (3, 4) и (4, 2): их недовольство составляет 3 (номер их текущего партнёра в списке их предпочтений).

Убедиться в том, что меньшего недовольства для расклада добиться не получится, можно, к примеру, перебрав все остальные возможные расклады: они либо окажутся нестабильны, либо максимальное недовольство кого-либо из партнёров будет не меньше 3.

E. Драконы во сне
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— А сами драконы именно так поступают, когда хотят найти себе пару? — спросила Принцесса.

— Драконы живут по одному. Они появляются, когда их придумывают люди. И исчезают, когда о них забывают, — ответил Дракон.

Дракон рассказал Принцессе, что когда кто-то придумывает нового дракона, то в Долине Замков появляется новый замок, в котором и проживает вновь придуманный дракон. А когда дракона долго никто не тревожит, он впадает в спячку.

Иногда в Долине Замков идёт необычный дождь: на небе ни облачка, ярко светит солнце, и только крупные частые капли стучат по крыше замка, в котором уснул дракон. А когда дождь заканчивается, на месте этого замка окажется лужайка с полевыми цветами. Более того, ручейки дождевой воды бегут по дорожкам, что ведут от этого замка. Если дорожка приводит к замку с бодрствующим драконом, то ручеёк останавливается. Если же на пути ручейка встречается замок с уснувшим драконом, замок тоже превратится в лужайку, а ручеёк побежит дальше.

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

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

Входные данные

В первой строке содержатся целые числа n и m (1 ≤ n ≤ 105,  1 ≤ m ≤ 2·105) — количество замков, в которых спят драконы, и количество дорожек между этими замками.

В каждой из следующих m строк содержится по два целых числа — номера замков, соединённых очередной дорожкой.

Гарантируется, что между двумя замками существует не более одной дорожки. Также не существует дорожки, которая соединяет замок с самим собой.

Выходные данные

Выведите единственное целое число — номер замка, в котором следует разбудить дракона.

Если существует несколько вариантов ответа, выведите любой.

Примеры
Входные данные
6 7
1 2
1 3
2 4
3 4
4 5
4 6
5 6
Выходные данные
4
Входные данные
4 4
1 2
2 3
3 4
4 1
Выходные данные
1
F. Квалификация
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— Но как же всех перезнакомить, если никто не хочет даже видеть друг друга? — план Дракона принцессе по-прежнему казался не особенно реализуемым.

— Не совсем так, — уточнил Дракон. — Никто не хочет незапланированных встреч. А вот, скажем, на какое-нибудь интеллектуальное состязание все охотно собираются. Есть игры, где команда состоит из двух человек...

Дракон рассказал Принцессе, что скоро в Долине Замков начнутся квалификационные соревнования по Игре в Слова. Команды, набравшие наибольшее количество очков, будут участвовать в следующем круге соревнований. При равном количестве очков более высокое место занимает команда, которая потратила меньше времени.

Опишем, как проходит квалификационная игра для одной команды.

У ведущего имеется стопка из m карточек, на каждой из которых записано по одному слову. Игроки ходят по очереди. Перед игрой они договариваются, кто из них будет делать первый ход, и сообщают об этом ведущему. Будем называть игрока, делающего первый ход, Первым игроком, а его сокомандника — Вторым игроком.

Сначала ведущий выдаёт одну карточку Первому Игроку. Первый Игрок пробует объяснить слово, записанное на карточке, Второму Игроку, не называя это слово. Когда объяснение закончено, Второй Игрок сообщает свой ответ. Если ответ Второго Игрока совпадает со словом на карточке, команде засчитывается очко. Далее ведущий выдаёт одну карточку Второму Игроку, и уже тот объясняет записанное на карточке слово Первому Игроку. Потом карточку вновь получает Первый Игрок... Игра продолжается, пока не закончатся карточки.

В этом сезоне в квалификационных играх есть важное дополнение к описанным выше правилам. При объяснении очередного слова игрок может использовать терминологию только одной предметной области. Более того, использовать терминологию некоторой предметной области в квалификационной игре можно только один раз. В правилах выделено n (n ≥ m) предметных областей.

Пара игроков X и Y, собирающаяся участвовать в квалификационной игре, очень много готовилась. Они полагают, что любой игрок пары угадает любое слово, объясняемое терминами любой предметной области. Вопрос только во времени, которое на это понадобится.

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

Теперь они хотели бы выяснить, за какое минимально возможное время они наберут m очков. Ваша задача — вычислить это время.

Входные данные

В первой строке содержатся целые числа m и n (1 ≤ m ≤ n ≤ 400) — количество карточек в стопке и количество предметных областей, терминологию которых можно использовать при объяснении.

Во второй строке содержится n целых чисел p1, p2, ..., pn, где pj (1 ≤ pj ≤ 106) — время, за которое угадывает слово игрок X, если он выслушал объяснение с использованием терминологии предметной области #j.

В третьей строке содержится n целых чисел q1, q2, ..., qn, где qk (1 ≤ qk ≤ 106) — время, за которое угадывает слово игрок Y, если он выслушал объяснение с использованием терминологии предметной области #k.

Выходные данные

В первой строке выведите целое число — минимально возможное время, которое потребуется игрокам на объяснение m слов согласно правилам игры. Игроки могут выбрать, кто из них будет делать первый ход.

Примеры
Входные данные
3 5
5 4 7 6 2
8 3 5 4 2
Выходные данные
9
Входные данные
4 4
2 4 6 8
1 4 6 7
Выходные данные
18
Примечание

В первом примере игрокам следует действовать так. Первый ход делает X; он объясняет Y слово терминами из второй предметной области, и Y угадывает слово за 3 единицы времени. Затем Y использует для объяснения термины пятой предметной области, и X угадывает слово за 2 единицы времени. И, наконец, X объясняет еще одно слово терминами из четвертой предметной области, а Y угадывает его за 4 единицы времени.

G. Не нарушая границы
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— Хорошая игра, — Принцесса произнесла это немного отстранённо; было понятно, что она думает о чём-то другом.

— В Долине Замков любят играть в разные игры. И сами их придумывают. Вот, к примеру, мой знакомый Рыцарь недавно играл в одну игру с одной принцессой, — Дракон решил, что нужно рассказать Принцессе про другую игру: быть может, предыдущая не показалась ей особо интересной.

Принцесса А. предложила Рыцарю сыграть с ней в игру с числами. Она записала на листе бумаги число 0. Назовём это число текущим результатом.

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

Принцесса А. выполняет действие, предложенное Рыцарем, и вычисляет полученное значение. Это значение и становится новым текущим результатом.

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

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

Ваша задача — определить максимально возможное количество ходов, которое сможет сделать Рыцарь в игре.

Входные данные

В первой строке содержатся целые числа n и k (1 ≤ n ≤ 1000,  1 ≤ k ≤ 1000) — количество чисел в последовательности, задуманной принцессой А., и значение, которое не должен превосходить текущий результат.

Во второй строке содержится n целых чисел c1, c2, ..., cn (1 ≤ cj ≤ k) — последовательность, задуманная принцессой А.

Выходные данные

В первой строке выведите целое число d — максимально возможное количество ходов, которые может сделать Рыцарь.

Во второй строке выведите d символов «+» и «–». Символ, стоящий на позиции #j, обозначает, какую операцию следует применить к числу #j из списка принцессы. Если существует несколько способов сделать d ходов, то выведите любой из них.

Примеры
Входные данные
2 5
3 2
Выходные данные
2
++
Входные данные
5 5
1 2 3 4 5
Выходные данные
4
++-+
H. Много дел
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— А Принц — в какие игры он играет? — Принцесса внимательно смотрела на Дракона.

— Принц... У него всегда столько разных дел, что на игры, наверное, просто времени не остаётся, — Дракон подумал немного и добавил, — А может быть, он не хочет играть, и поэтому всегда находит много разных дел.

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

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

Принц хвалился своей методикой, упомянув, помимо прочего, что использует еще параметр забывания — некоторое целое число k, максимально допустимое расстояние между клетками одного цвета, если они относятся к одному делу. Конечно, это не значит, что если между клетками одного цвета расстояние не больше k, то они совершенно точно относятся к одному делу. Но если между клетками одного цвета расстояние больше k, они совершенно точно относятся к разным делам.

Дракона заинтересовало минимальное количество разных дел, которые сделал за последнее время Принц. Ваша задача — определить это по заданной раскраске полоски и величине k. Ради простоты обозначений вместо цветов использованы числа.

Входные данные

В первой строке содержится целое число n (1 ≤ n ≤ 105) — количество закрашенных клеток.

Во второй строке содержится последовательность чисел c1, c2, ..., cn (1 ≤ cj ≤ 105) — описание раскраски полоски. Одинаковые числа соответствуют одинаковым цветам.

В третьей строке содержится целое число q (1 ≤ q ≤ 105) — количество запросов.

В четвертой строке содержатся целые числа k1, k2, ..., kq (1 ≤ k ≤ n) — значения параметра забывания, для которых надо определить минимально возможное количество различных дел, которыми был занят в течение n единиц времени Принц.

Выходные данные

Выведите в первой строке q целых чисел dj (j = 1, 2, ..., q). Число dj — минимально возможное количество дел, которыми был занят Принц при соответствующем значении параметра забывания.

Примеры
Входные данные
6
1 1 1 1 1 1
5
1 2 3 4 5
Выходные данные
3 2 2 2 1 
Входные данные
15
3 2 1 3 4 8 2 1 1 3 3 1 4 6 2
6
7 3 10 5 4 6
Выходные данные
10 12 7 10 11 10 
I. Стремление к совершенству
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Принц решил, что ему недостаёт некоторых знаний и навыков. Он определил, что в первую очередь хочет приобрести знания и навыки в n сферах деятельности. Затем он выяснил, что существует m1, m2, ..., mn курсов и тренингов по каждой из интересующих его сфер деятельности. Принц внимательно изучил описания курсов и тренингов и составил таблицу, в которой элемент sij обозначает, на какую величину он может улучшить свои знания и навыки в сфере деятельности #i, если запишется на курс #j (j = 1, 2, ..., mi).

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

Ваша задача — определить, на какие курсы следует записаться Принцу.

Входные данные

В первой строке содержится целое число n (1 ≤ n ≤ 200) — количество интересующих Принца сфер деятельности.

Во второй строке содержится n целых чисел m1, m2, ..., mn (1 ≤ mj ≤ 1000,  j = 1, 2, ..., n) — количество курсов по каждой из сфер деятельности.

В следующих n строках содержатся величины sij (1 ≤ sij ≤ 109) — знания и навыки, которые Принц может приобрести на курсах. В первой из этих n строк содержатся величины s11, s12, ..., s1m1, во второй — величины s21, s22, ..., s2m2 и т.д.

Величины sij перечислены в порядке нумерации курсов для каждой из сфер деятельности.

Выходные данные

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

Во второй строке выведите n целых чисел — номера курсов, на которые следует записаться Принцу. Перечисляйте номера согласно порядку сфер деятельности.

Если существует несколько вариантов ответа — выведите любой.

Примеры
Входные данные
2
2 3
4 3
3 1 2
Выходные данные
0
2 1
Входные данные
4
3 5 4 5
8 7 15
3 10 4 8 5
4 4 4 5
1 2 12 8 9
Выходные данные
3
2 5 4 4
J. Много времени
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дракон полагал, что не все курсы и тренинги так уж полезны. Вот что ему казалось полезным почти наверняка — это занятия спортом. Правда, не тем, который с приставкой «кибер». Ему доводилось наблюдать, как затягивает игра. И хотя он был согласен, что это интересное занятие, по его мнению, это отнимает слишком много времени.

Тут Дракон поймал себя на мысли, что общение с Принцем не проходит бесследно — казалось бы, какая разница Дракону, существующему вне времени, сколько времени будет потрачено кем бы то ни было на игру...

Однажды он наблюдал за одним рыцарем, любителем играть. Он даже организовал целый клуб любителей игры. Сначала в этом клубе было n участников.

Когда этот рыцарь собирался играть, то он выбирал тип партии и отправлял сообщения своим знакомым из клуба с приглашением поиграть. Эти знакомые пересылали сообщения своим знакомым, и информация о предстоящей игре распространялась среди членов клуба.

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

Дракона заинтересовало, сколько же человеко-минут было потрачено на каждую игру, предложенную рыцарем. Ваша задача — определить это.

Входные данные

В первой строке содержатся целые числа n, m, p (2 ≤ n ≤ 105,  1 ≤ m ≤ 2·105,  1 ≤ p ≤ 2·105) — начальное количество членов клуба, количество пар участников, знакомых между собой, и количество игр, предложенных рыцарем.

Во второй строке содержится n - 1 целое число t2, t3, ..., tn (1 ≤ tj ≤ 109) — время, которое участник с соответствующим номером готов потратить на партию. Нумерация участников ведётся с единицы, при этом номер 1 имеет рыцарь, и он готов потратить на партию любое время.

В третьей строке содержится p целых чисел g1, g2, ..., gp (1 ≤ gk ≤ 109) — длительности игр в том порядке, в котором их предлагал рыцарь.

В каждой из следующих m строк записано по два целых числа — номера членов клуба, которые могут обменяться сообщениями между собой.

Выходные данные

Выведите p целых чисел s1, s2, ..., sp, где sk — количество времени, потраченное всеми игроками на игру #k.

Примеры
Входные данные
4 4 4
2 3 3
1 3 4 1
1 2
1 3
3 4
2 4
Выходные данные
4 9 4 1 
Входные данные
4 3 1
1 10 3
3
1 2
2 3
1 4
Выходные данные
6 
Примечание

Поясним приведённые примеры.

В первом примере происходит следующее. В первой игре участвуют все члены клуба, поэтому суммарное потраченное на эту игру время равно 4.

Получив предложение участвовать во второй игре член клуба с номером 2 покидает клуб, и во второй игре участвуют трое игроков. Суммарное потраченное на игру время равно 9.

Перед третьей игрой клуб покидают члены с номерами 3 и 4, и в игре участвует только сам рыцарь; суммарное потраченное время равно 4. В четвёртую игру рыцарь также играет в одиночку: он остался единственным членом клуба. Потраченное на четвёртую игру время составляет 1.

Во втором примере член клуба с номером 2 отказывается от участия уже в первой игре; при этом он не пересылает сообщение о начале игры члену клуба с номером 3. Поскольку для члена клуба с номером 3 это был единственный способ узнать о предстоящей игре, то узнать о ней он уже не сможет. Таким образом, в игре примут участие два человека, а суммарное потраченное время равно 6.

K. Порядок слов
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— Дело не в играх, — Дракон всё же решил, что не стоит говорить про тренинги. — Нужно, чтобы он захотел насовсем уйти из Долины Замков.

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

— Лучше говорить, что ничего для него не изменится, если он уйдёт из Долины, — прервал размышления Принцессы Дракон.

Принцесса уже давно решила, что она скажет Принцу. Но Дракон, выслушав Принцессу, понял, что в таком виде рассказ вряд ли убедит Принца покинуть Долину. Он уже хорошо изучил Принца и понимал, что не все аргументы Принцессы покажутся Принцу аргументами «за».

Будем считать, что сказанное Принцессой — это последовательность аргументов. Дракон точно знает про каждый из аргументов, является ли он аргументом «за», аргументом «против» или же носит нейтральный характер.

Дракон предложил Принцессе перестроить последовательность аргументов таким образом, чтобы позиция, на которой находится самый последний аргумент «против», предшествовала позиции, на которой находится самый первый аргумент «за».

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

Ваша задача — определить это минимально возможное количество шагов.

Входные данные

В первой строке содержится целое число n (2 ≤ n ≤ 100) — количество аргументов Принцессы.

Во второй строке записана последовательность из n символов F, A, N, где F обозначает аргумент «за», A обозначает аргумент «против», а N — нейтральный аргумент.

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

Выходные данные

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

Примеры
Входные данные
6
FNAFNN
Выходные данные
2
L. Много вопросов
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

— Совсем забыл! Ко мне в гости Рыцарь сегодня собирался прийти, — как ни старался Дракон, хитрить у него получалось не очень, — Мне кажется, вам будет интересно познакомиться.

— Кажется, мы с ним немного знакомы, — улыбнулась Принцесса, — А встретиться случается редко: разные люди, разные интересы...

Дракон полагает, что общие интересы — это не самое главное. Куда важнее, чтобы по принципиальным для обоих вопросам были схожие мнения. У Дракона есть список вопросов, которые он уже задавал Рыцарю и Принцу. Теперь он собирается задать их Принцессе.

Ответ на каждый вопрос — некоторое целое положительное число. Дракон будет считать, что Принцесса скорее согласится с Рыцарем, если взятая по абсолютной величине разность между числами, названными Рыцарем и Принцессой, меньше, чем взятая по абсолютной величине разность между числами, названными Принцем и Принцессой. Если же меньшей является разность между числами, названными Принцем и Принцессой, Дракон решит, что Принцесса скорее согласится с Принцем. Случаи равенства Дракон исключает из рассмотрения.

Ваша задача — определить, в скольких вопросах Принцесса скорее согласится с Принцем, а в скольких — с Рыцарем.

Входные данные

В первой строке содержится целое число n (1 ≤ n ≤ 1000) — количество вопросов Дракона.

Во второй строке содержится n целых чисел p1, p2, ..., pn — ответы Принца на вопросы Дракона.

В третьей строке содержится n целых чисел k1, k2, ..., kn — ответы Рыцаря на вопросы Дракона.

В четвёртой строке содержится n целых чисел r1, r2, ..., rn — ответы Принцессы на вопросы Дракона.

Все числа, обозначающие ответы на вопросы, положительные и не превосходят 100.

Выходные данные

В первой строке выведите два числа через пробел — количество вопросов, в которых Принцесса скорее согласится с Принцем, и количество вопросов, в которых Принцесса скорее согласится с Рыцарем.

Примеры
Входные данные
7
1 5 24 11 82 100 7
6 3 85 78 14 32 33
2 4 64 35 55 61 5
Выходные данные
4 2
M. Всё сложно
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дракон пил чай на балконе и любовался необычайно красивым закатом. В лучах заходящего солнца ещё можно было различить две удаляющиеся фигуры. Дракону было немного грустно: Принцесса, конечно, обещала как-нибудь заглянуть в гости, но зачем ей теперь возвращаться в Долину Замков?..

Он решил, что завтра попробует приготовить печенье, рецепт которого рассказала ему Принцесса. А для этого нужно посчитать, достаточно ли у него ингредиентов. Конечно, у него есть в запасе и имбирь, и корица, и гвоздика, и кардамон... Но для печенья их нужно больше, чем для заваривания чая.

Дракон пересчитал свои запасы, и теперь для каждого ингредиента знает, сколько единиц этого ингредиента имеется в наличии.

В рецепте указано, сколько единиц того или иного ингредиента требуется для изготовления одного печенья. Конечно, Дракон хочет изготовить целое количество печений.

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

Теперь он интересуется, сколько минимально ему понадобится на это денег. Стоимость единицы каждого ингредиента ему известна. Ваша задача — определить минимальную сумму, которую придётся потратить Дракону.

Входные данные

В первой строке содержится целое число n (1 ≤ n ≤ 10) — количество ингредиентов.

Во второй строке содержится n целых чисел q1, q2, ..., qn (1 ≤ qj ≤ 100,  j = 1, 2, ..., n), qj — количество ингредиента #j, имеющееся в запасе у Дракона.

В третьей строке содержится n целых чисел c1, c2, ..., cn (1 ≤ cj ≤ 10,  j = 1, 2, ..., n), cj — количество ингредиента #j, необходимое для изготовления одного печенья.

В четвёртой строке содержится n целых чисел p1, p2, ..., pn (1 ≤ pj ≤ 100,  j = 1, 2, ..., n), pj — цена единицы ингредиента #j.

Выходные данные

Выведите единственное целое число — сумму, которую придётся потратить Дракону.

Примеры
Входные данные
3
15 8 10
2 3 5
12 1 4
Выходные данные
148