Учебно-тренировочные сборы в Университете Иннополис, январь 2016. День 4 Россия, Иннополис, 8 января 2016 Задача A. Веревочная почта Имя входного файла: Имя выходного файла: Ограничение по времени: Ограничение по памяти: стандартный ввод стандартный вывод 2 секунды 256 мегабайт Каждый из нас привык к различным средствам связи: телефон, электронная почта или социальная сеть всегда помогают нам передать другому человеку, возможно, находящемуся на другой стороне Земли, какие-то сведения. В одной известной фирме, предоставляющей в качестве своих сервисов электронную почту и систему мгновенной передачи сообщений, человеку, желающему работать в компании, предлагается следующее тестовое задание: посчитать минимальное время доставки всех сообщений до адресатов с помощью системы, называемой «Веревочная почта». Суть системы сводится к следующему: на одной прямой, вдоль которой натянута веревка, находится n человек, пронумерованных по порядку числами от 1 до n. Известно, что между людьми с номерами, различающимися на 1, больше никого нет, и расстояние между всеми такими соседями одинаково и равно 1 метру. Каждый из них хочет передать одному из других участников системы некоторое сообщение. Так, человек с номером i хочет передать сообщение человеку с номером ai . Каждый человек закрепляет конверт со своим сообщением на веревке около себя и пишет на нем номер адресата. После этого веревка несколько раз двигается вдоль прямой в разных направлениях, и как только перед человеком оказывается конверт, адресованный ему, он забирает его и получает сообщение. Поскольку веревка двигается с постоянной скоростью, время доставки всех сообщений до адресатов зависит от суммарного расстояния, на которое сдвинется веревка. Задача, предлагаемая кандидату на собеседовании, состоит в минимизации этого расстояния. Например, пусть первый человек хочет отправить сообщение второму, второй — третьему, третий — второму, а четвертый — первому. Тогда необходимо сдвинуть веревку вперед на 1 метр, после этого второй человек получит сообщение от первого, а третий — от второго. После этого веревку необходимо сдвинуть назад на 2 метра (после чего второй получит сообщение от третьего) и еще на 2 (первый получит сообщение от четвертого). Итого, веревку необходимо суммарно передвинуть на 5 метров. Формат входных данных Первая строка входных данных содержит одно целое число n (2 ⩽ n ⩽ 105 ) — количество людей, обменивающихся сообщениями. Вторая строка содержит n целых чисел ai (1 ⩽ ai ⩽ n, ai ̸= i) — номер человека, которому адресовано сообщение i-го участника. Формат выходных данных Выведите одно целое число — минимальное суммарное расстояние, на которое нужно сдвинуть веревку так, чтобы все сообщения попали по адресу. Система оценки Номер Баллы подзадачи Ограничения Комментарии длина выражения 0 0 Примеры из условия. 1 20 n ⩽ 10 Баллы начисляются, если все тесты этой и предыдущих подзадач пройдены. 2 30 n ⩽ 103 Баллы начисляются, если все тесты этой и предыдущих подзадач пройдены. 3 50 n ⩽ 105 Баллы начисляются, если все тесты этой и предыдущих подзадач пройдены. Страница 1 из 5 Учебно-тренировочные сборы в Университете Иннополис, январь 2016. День 4 Россия, Иннополис, 8 января 2016 Примеры стандартный ввод 4 2 3 2 1 стандартный вывод 5 Страница 2 из 5 Учебно-тренировочные сборы в Университете Иннополис, январь 2016. День 4 Россия, Иннополис, 8 января 2016 Задача B. Квадрат Имя входного файла: Имя выходного файла: Ограничение по времени: Ограничение по памяти: стандартный ввод стандартный вывод 2 секунды 256 мегабайт На бесконечной клетчатой доске находится необычная шахматная фигура — черно-красный квадрат. Эта фигура представляет собой квадрат, занимающий ровно одну клетку доски, поверхность которого с одной стороны покрашена в черный, а с другой — в красный цвет. В отличие от обычных шахматных фигур, черно-красный квадрат оставляет на поле следы. Каждая клетка, на которой он побывал, оказывается покрашенной в черный либо в красный цвет, в зависимости от того, какой стороной вниз квадрат оказался на этой клетке. За один ход квадрат может перекатиться в соседнюю клетку. При этом он переворачивается, если он лежал черной стороной вверх, то он оказывается черной стороной вниз, и наоборот. Клетка, в которую он перекатывается, красится в цвет, в который окрашена нижняя сторона квадрата. Сначала квадрат лежит черной стороной вниз, как следствие начальная клетка пути квадрата оказывается окрашена в черный цвет. Исходно все клетки доски раскрашены в белый цвет. Найдите какой-нибудь путь квадрата, после которого на доске будет ровно r красных и ровно b черных клеток. Гарантируется, что хотя бы один такой путь существует. Формат входных данных Единственная строка содержит два целых числа r и b (0 ⩽ r ⩽ 1 000; 1 ⩽ b ⩽ 1 000). Формат выходных данных В первой строке выведите число n — количество ходов, сделанных квадратом, n не должно превышать 105 . Во второй строке выведите сам путь квадрата: строку длиной n из букв N, S, W или E. Эти буквы обозначают ходы вверх, вниз, влево и вправо, соответственно. Если ответов несколько, выведите любой. Гарантируется, что хотя бы один ответ существует. Система оценки Номер Баллы подзадачи Комментарий Ограничения 0 0 Примеры из условия. 1 30 r+b⩽5 2 70 0 ⩽ r ⩽ 1 000; 1 ⩽ b ⩽ 1 000 Баллы начисляются, если все тесты пройдены. Баллы за каждый тест оцениваются отдельно, но если все тесты предыдущих подзадач пройдены. Примеры стандартный ввод 0 1 стандартный вывод 0 Страница 3 из 5 Учебно-тренировочные сборы в Университете Иннополис, январь 2016. День 4 Россия, Иннополис, 8 января 2016 Задача C. Книжная полка Имя входного файла: Имя выходного файла: Ограничение по времени: Ограничение по памяти: стандартный ввод стандартный вывод 1 секунда 256 мегабайт Когда Фермер Джон не доит коров, собирает сено, выстраивает коров или строит изгороди, он сидит и читает хорошую книгу. С годами он собрал коллекцию из n книг, и хочет построить для них новое множество книжных полок. Каждая книга i имеет ширину wi и высоту hi . Книги необходимо ставить на полки в определенном порядке; например, первая полка должна содержать книги с номерами от 1 до k для некоторого k. Вторая полка должна содержать книгу k + 1 и т.д. Каждая полка имеет общую ширину не более l. Высота полки равна высоте самой высокой книги на этой полке, а высота множества книжных полок равна сумме высот на всех полках, поскольку полки ставятся одна поверх другой. Помогите ФД вычислить минимально возможную высоту всего множества книжных полок. Формат входных данных Первая строка входного файла содержит два целых числа n и l (1 ⩽ n ⩽ 105 , 1 ⩽ l ⩽ 109 ). Следующие n строк содержат пару целых чисел разделенных пробелом hi и wi , высота и ширина i-й книги соответственно (1 ⩽ hi ⩽ 106 , 1 ⩽ wi ⩽ l). Формат выходных данных Выведите единственное целое число — минимально возможная высота множества полок. Система оценки Номер Баллы подзадачи Комментарий Ограничения 0 0 Примеры из условия. 1 50 1 ⩽ n ⩽ 104 Баллы начисляются, если все тесты пройдены. 2 50 1 ⩽ n ⩽ 105 Баллы начисляются за каждый тест отдельно, но только, если все тесты предыдущих подзадач пройдены. Offline тестирование, баллы будут известны после конца соревнования. Примеры стандартный ввод 5 10 5 7 9 2 8 5 13 2 3 8 стандартный вывод 21 Замечание Пояснение к тесту из условия: Всего 5 книг. Каждая полка имеет ширину не более 10. Всего 3 полки. Первая содержит книгу 1 (высота 5, ширина 7), вторая содержит книги 2 . . . 4 (высота 13, ширина 9), третья содержит книгу 5 (высота 3, ширина 8). Страница 4 из 5 Учебно-тренировочные сборы в Университете Иннополис, январь 2016. День 4 Россия, Иннополис, 8 января 2016 Задача D. Вирусы Имя входного файла: Имя выходного файла: Ограничение по времени: Ограничение по памяти: стандартный ввод стандартный вывод 2 секунды 256 мегабайт В некоторой антивирусной компании занимаются исследованием вирусов. Им известно о существовании m типов вирусов. Каждый вирус задается строкой из строчных букв латинского алфавита. Вирусам разного типа соответствуют разные строки. Недавно начались исследования ранее не изучавшихся объектов — полностью зараженных строк. Строка s называется полностью зараженной, если для любого ее символа существует подстрока s, содержащая этот символ и являющаяся вирусом. Ваша задача — по заданным вирусам найти количество полностью зараженных строк длины n. Так как это число может быть очень большим, выведите его по модулю 109 + 7. Формат входных данных Первая строка содержит два целых числа n и m (1 ⩽ n ⩽ 400; 1 ⩽ m ⩽ 20). Далее в m строках задано описание вирусов. В каждой из этих строк задана последовательность строчных букв латинского алфавита. Длина каждого вируса положительна и не превосходит 20 символов. Формат выходных данных Выведите единственное целое число — остаток от деления числа полностью зараженных строк на 109 + 7. Система оценки Номер Баллы подзадачи Ограничения Комментарии длина выражения 0 0 Примеры из условия. 1 67 m=1 Баллы начисляются, если все тесты этой и предыдущих подзадач пройдены. 2 33 m ⩽ 20 Баллы начисляются, если все тесты этой и предыдущих подзадач пройдены. Примеры стандартный ввод 5 2 aba babc стандартный вывод 2 Страница 5 из 5