2015-2016 VI Открытый чемпионат БГУИР по программированию. Полуфинал
A. LIS и GCD
ограничение по времени на тест
15 с
ограничение по памяти на тест
1024 МБ
ввод
стандартный ввод
вывод
стандартный вывод

Даны два массива целых чисел a и b длины n каждый. Необходимо посчитать сумму НОД-ов подпоследовательностей массива b таких, что соответствующая подпоследовательность массива a является возрастающей.

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

Первая строка содержит одно целое число n. Вторая строка содержит n целых чисел ai. Третья строка содержит n целых чисел bi.

1 ≤ n ≤ 105
1 ≤ ai ≤ 109
1 ≤ bi ≤ 106
Выходные данные

Выведите ответ на задачу по модулю 109 + 7.

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

Третий пример. Возможны следующие возрастающие подпоследовательности в a и соответствующие им НОД-ы:

{2}->2, {3}->3, {1}->6, {4}-> 9, {2,3}->1, {2,4}->1, {3,4}->3, {1,4}->3, {2,3,4}->1.

B. Сумма-и-сумма
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У маленького Леши есть массив из n целых чисел. Каждый день он выбирает некоторый непрерывный отрезок массива и рассматривает все его подотрезки. Для каждого подотрезка он вычисляет побитовое И всех его элементов, прибавляет к нему сумму всех элементов подотрезка и затем записывает полученное число в Тетрадку для Важных Чисел. Заметим, что так как числа в массиве могут быть отрицательными, при вычислении побитового И берутся модули этих чисел. В конце дня, когда Леша рассмотрел все подотрезки, он находит максимальное число среди записанных в тетрадку и записывает его в свою Тетрадку для Очень Важных Чисел. Леша очень дорожит своей Тетрадкой для Очень Важных Чисел и хочет проверить, не записал ли он в нее по ошибке неправильное число. Помогите мальчику проверить его записи.

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

Первая строка входных данных содержит числа n и m — количество элементов в массиве и количество записей в Тетрадке для Очень Важных Чисел. Вторая строка содержит n целых чисел ai разделенных пробелами — элементы массива. Следующие m строк содержат числа li и ri — индексы первого и последнего элементов отрезка массива, с которым Леша играл в i-й день.

1 ≤ n ≤ 3 × 105
1 ≤ m ≤ 3 × 104
|ai| ≤ 105
1 ≤ li ≤ ri ≤ n
Выходные данные

Вывод должен содержать m строк, на i-й строке выведете число, которое Леша должен был записать в тетрадку в конце i-го дня.

Пример
Входные данные
7 3
3 -3 3 -3 6 5 -3
2 4
3 7
2 6
Выходные данные
6
15
15

C. Потерянный массив
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Маленькому Леше улыбнулась удача: ему удалось раздобыть очень редкий и необычный массив A, состоящий из n целых чисел. Заполучив в свои руки такой ценный предмет, мальчик сразу же отнес его в свою подземную лабораторию, намереваясь постичь тайны устройства массива. Как опытный исследователь, Леша решил не спешить с проведением жутких экспериментов над бедным массивом, а сперва понаблюдать за ним. Он записал на листик бумаги результаты m наблюдений за массивом. Каждое наблюдение описывается тремя числами li, ri и si, которые означают, что сумма элементов по модулю 2 на подотрезке [li, ri] массива равна si. Леша подготовил все необходимое для проведения m + 1-го наблюдения, но тут он услышал, что мама зовет его обедать. По возвращении в свою лабораторию, мальчик увидел страшное: массив исчез. Совсем. Все надежды мальчика на получение Нобелевской премии в области исследования массивов рассыпались на глазах. Но потом Леша вспомнил, что у него все же осталась некоторая информация о массиве. Основываясь на записанных фактах, он решил построить компьютерную модель массива и проводить эксперименты над ней. Конечно, мальчик понимал, что он не сможет однозначно восстановить утерянный массив, потому что существует бесконечно много массивов, удовлетворяющих записанным фактам. Все мы знаем, что операции с большими числами занимают много времени, а если еще к тому же числа становятся отрицательными... Чтобы сделать свою компьютерную модель как можно более быстрой, Леша решил построить массив, удовлетворяющий известным фактам, элементы которого неотрицательны, а их сумма минимально возможная. Помогите ему сделать это!

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

Первая строка входных данных содержит числа n и m - количество элементов в массиве и количество фактов. Следующие m строк содержат числа li, ri и si - описание i-го факта.

1 ≤ n ≤ 40
0 ≤ m ≤ 100
1 ≤ li ≤ ri ≤ n
0 ≤ si ≤ 1
0 ≤ ai ≤ 109
Выходные данные

Вывод должен содержать n целых чисел ai - элементы восстановленного массива. Если существует несколько возможных ответов, выведете лексикографический минимальных среди них. Массив X лексикографически меньше массива Y если существует такой индекс k ≤ |X|, что xi = yi для всех i < k и xk < yk.

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

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

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

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

Например, задумано тайное число 3219. Делается попытка 2310, в ответ приходит результат 12 — две коровы (две цифры 2 и 3 угаданы на неверных позициях) и один бык (одна цифра 1 угадана вплоть до позиции).

У Вас есть не более 8 попыток, чтобы отгадать загаданное число и покинуть живым обитель безумного фермера. Удачи!

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

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

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

После каждой попытки угадать не забывайте выводить символ новой строки и делать flush-операцию (сброс буфера, например, fflush(stdout) в С++, System.out.flush() в Java, и flush(output) в Pascal).

Пример
Входные данные
0123
0145
0256
0612
0178
0619
Выходные данные
11
11
11
30
11
40

E. A+B
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 МБ
ввод
стандартный ввод
вывод
стандартный вывод

Вам дано N чисел Ai. Требуется найти сумму Ai. К сожалению, числа во вводе перемешаны, т. е. число N может находится не на первой позиции.

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

В первой строке задаются числа Xi (0 ≤ Xi ≤ 50). Количество чисел во вводе не больше 50. Среди этих чисел находятся число N и числа Ai.

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

Выведите сумму чисел Ai.

Пример
Входные данные
23 3 12 7
Выходные данные
42

F. Камень, трава и огонь
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Фермер Лёша владеет полем размера n клеток на m клеток. Позиция каждой клетки характеризуется парой чисел (i, j), которые обозначают номер строки и номер столбца соответственно. Каждая клетка этого поля является либо травой (обозначается символом '.') либо камнем (обозначается символом 'X').

Случилось несчастье — на поле начался пожар. Огонь начал разгораться из разных источников. Всего есть k источников огня. i-ый источник огня начал гореть из клетки с травой c координатами (xi, yi) и будет гореть ci секунд. Каждую секунду огонь распространяется на соседние по сторонам клетки. Если в текущей клетке огню осталось горесть c секунд, то в соседней клетке, на которую он распространяется, ему останется гореть c - 1 секунду. Огонь из текущей клетки не распространяется, если ему остаётся гореть 0 секунд. Можно считать, что все огни горят независимо, то есть распространение огня никак не зависит от другого огня. Все источники огня имеют различные координаты. Камень не горит.

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

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

В первой строке ввода задано три целых числа n, m, k — размеры поля и количество источников огня соответственно. В следующих n строках содержатся по m символов — описание поля. j-ый символ в i-ой строке отвечает за тип клетки с координатами (i, j). В следующих k строках содержатся по три целых числа xi, yi, ci — описание i-го источника огня.

1 ≤ N, M ≤ 500
0 ≤ K ≤ N × M
1 ≤ xi ≤ N
1 ≤ yi ≤ M
1 ≤ ci ≤ 109
Выходные данные

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

Пример
Входные данные
4 5 2
.X...
.X.X.
.X.X.
...X.
1 3 1
3 3 4
Выходные данные
9

G. Переханойские башни
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Всем известна классическая задача о Ханойских башнях. Имеется три стержня, на один из которых нанизано n колец, радиус которых убывает снизу вверх, т.е. первое снизу кольцо имеет наибольший радиус, а первое сверху – наименьший. Задача заключается в том, чтобы перенести все кольца в том же порядке на другой стержень за наименьшее возможное число ходов. В течение одного хода разрешается перенести одно кольцо с одного стержня на другой, при этом кольца большего радиуса не разрешается класть на кольца меньшего радиуса.

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

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

Одно целое число n — количество колец на первом стержне.

1 ≤ n ≤ 109
Выходные данные

Минимальное количество перекладываний по модулю 109 + 7.

Примеры
Входные данные
2
Выходные данные
3
Входные данные
8
Выходные данные
33

H. Шифр
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Устав изобретать велосипед, Леша решил изобрести абсолютно стойкий шифр. Матёрый криптоаналитик Вася прознал, что Лёша использует в своем алгоритме только такие x и y, что li ≤ x ≤ ri и lj ≤ y ≤ rj для 1 ≤ i < j ≤ n. Помогите Васе взломать тайное послание Лёши. Для этого найдите количество четвёрок чисел x y i j таких, что количество единиц в двоичном представлении значения нечетно.

 — сложение по модулю 2, исключающее ИЛИ, строгая дизъюнкция, xor, поразрядное дополнение, побитовый комплемент.

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

В первой строке задается число n. В следующих n строках задаются пары чисел li ri.

1 ≤ n ≤ 105
1 ≤ li ≤ ri ≤ 1018
Выходные данные

В единственной строке выведите количество искомых четверок по модулю 109 + 7.

Пример
Входные данные
4
1 4
7 9
6 7
2 8
Выходные данные
42

I. ООО «Абажур»
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Начинающий предприниматель Яша начитался книг по маркетингу и решил дать своей фирме название, которое будет находиться в алфавитном указателе городских организаций как можно раньше. Но администрация города, устав от бесконечных ООО «Абажур», выдала ему в качестве названия случайную строку, в которой необходимо сделать ровно одну модификацию, поменяв местами два любых символа, которые находятся друг от друга на расстоянии, равном любому из любимых чисел главы администрации. Расстояние вычисляется как абсолютная разница позиций символов в строке. Гарантируется, что такая модификация возможна.

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

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

2 ≤ |S| ≤ 105
1 ≤ n ≤ 50
1 ≤ ai < |S|
Выходные данные

Выведите название компании, которое нужно выбрать.

Пример
Входные данные
acdbe
2
4 2
Выходные данные
abdce

J. Покрывающее расстояние
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Дано множество из n геометрических точек. Пусть выбрана произвольная точка P. Рассмотрим все возможные k невырожденных различных треугольников Ti, образованных точкой P и двумя другими точками из множества. Треугольники считаются различными, если отличаются хотя бы одной вершиной. Строго внутри каждого треугольника Ti (точки на границах не учитываются) лежит mi точек ti, j. Покрывающим расстоянием назовем величину , где dist(X, Y) обозначает евклидово расстояние между точками X и Y. Если для точки P не найдется ни одной точки ti, j, подходящей под описанные выше критерии, то покрывающее расстояние считается равным -1.

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

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

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

1 ≤ n ≤ 300
|xi|, |yi| ≤ 109
Выходные данные

Для каждой точки выведите искомое среднее расстояние. Если ни одной подходящей точки не существует, выведите  - 1. Ответ должен отличаться по абсолютной или относительной погрешности не более чем на 10 - 9.

Пример
Входные данные
6
0 2
2 4
-1 3
0 0
1 3
1 2
Выходные данные
-1
1.885618083
1.648528137
2.290569415
1.414213562
1

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

Устали от длинных, запутанных, неинтересных, скучных сказок и легенд в условиях задач? Эти жалкие попытки авторов условий проявить талант писателя, которого у них отродясь не было... Ничем не объяснимое желание исковеркать кристально чистую, стройную и красивую математическую задачу и прибить ее гвоздями к нашей мрачной действительности... Довольно! В этой задаче вас ждет короткое, ясное и строгое условие.

Задан массив F, состоящий из n целых чисел. Дано m четверок ai, bi, ci, di таких, что ai ≤ bi, ci ≤ di. Для каждой четверки необходимо вычислить и вывести величину ansi, равную количеству упорядоченных пар (u, v) таких, что ai ≤ u ≤ bi, ci ≤ v ≤ di и Fu = Fv.

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

Первая строка входных данных содержит два целых числа n и m — размер массива F и количество четверок. Вторая строка содержит n целых чисел Fi — элементы массива F, разделенные пробелами. Следующие m строк содержат по четыре целых числа ai, bi, ci, di.

1 ≤ n ≤ 2 × 105
1 ≤ m ≤ 3 × 104
0 ≤ Fi ≤ 105
1 ≤ ai ≤ bi ≤ n
1 ≤ ci ≤ di ≤ n
Выходные данные

Выведите m строк. i-я строка должна содержать единственное число — ansi.

Примеры
Входные данные
10 5
4 1 5 0 1 1 1 0 2 1
7 10 4 6
3 5 3 5
5 10 4 7
9 10 3 10
1 3 2 10
Выходные данные
5
3
13
5
6
Входные данные
5 3
2 1 3 3 2
3 3 2 5
3 4 3 4
4 5 2 2
Выходные данные
2
4
0