Личный послеобеденный тур B 6 ноября 2011 года Задача A. Таблица Максимальное время работы на одном тесте: 2 секунды Максимальный объем используемой памяти: 64 мегабайта Рассмотрим прямоугольную таблицу n на m. Занумеруем строки таблицы числами от 1 до n, а столбцы – числами от 1 до m. Таблица последовательно заполняется числами. Обозначим через aij число, стоящее на пересечении i-ой строки и j-ого столбца. Первая строка таблицы заполняется заданными числами – a11, a12, …, a1m. Затем заполняются строки с номерами от 2 до n. Число aij вычисляется как сумма всех чисел таблицы, находящихся в «треугольнике» над элементом aij. Все вычисления при этом выполняются по модулю r. ai,j Более точно, значение aij вычисляется по следующей формуле: k =i−1 t=i k a i , j= ∑ ∑ k =1 t =i−k 1≤t≤m a i−k , t mod r Например, если таблица состоит из трех строк и четырех столбцов, и первая строка состоит из чисел 2, 3, 4, 5, а r = 40 то таблица выглядит следующим образом (взятие по модулю показано только там, где оно приводит к изменению числа): 2 3 4 5 5=2+3 9=2+3+4 12 = 3 + 4 + 5 9=4+5 23 = 2 + 3 + 4 + 5 + 9 0 = (2 + 3 + 4 + 5 + 5 + 4 = (2 + 3 + 4 + 5 + 9 + 33 = 3 + 4 + 5 + 12 + 9 9 + 12) mod 40 = 40 12 + 9) mod 40 = mod 40 44 mod 40 Дана первая строка таблицы (a11, a12, …, a1m), требуется вычислить последнюю строку. Поскольку числа в ответе могут быть достаточно большими, посчитайте ответ по модулю r. Входные данные Первая строка входного файла содержит числа n, m и r (2 ≤ n, m ≤ 2000, 2 ≤ r ≤ 109) – число строк и столбцов таблицы соответственно, а так же число, по модулю которого надо посчитать ответ. Следующая строка содержит m целых чисел – первую строку таблицы: a11, a12, …, a1m. Все a1i неотрицательны и не превосходят 109. Выходные данные Выведите в первой строке выходного файла m чисел – последнюю строку таблицы: an1, an2, …, anm. Пример Входные данные 2 1 3 1 3 2 3 2 3 1 4 3 10 3 10 1 40 4 5 Выходные данные 3 6 5 8 0 8 23 0 4 33 Особенности оценивания решений Решения, работающие при n, m ≤ 50, будут оцениваться из 40 баллов. Решения, работающие при n, m ≤ 300, будут оцениваться из 60 баллов. Страница 1 из 2 Личный послеобеденный тур B 6 ноября 2011 года Задача B. Heroes of Money and Magic Максимальное время работы на одном тесте: 2 секунды Максимальный объем используемой памяти: 64 мегабайта Вы — инвестор, который играет на бирже, спекулируя акциями некой компании. В результате использования машины времени для каждого дня в течение некоторого предстоящего периода времени вам известна стоимость акций, и вы хотите заработать как можно больше денег. Акции являются неделимыми. Кроме того, в любой момент можно купить или продать (из имеющихся у вас) любое число акций. Единственное, что вам мешает сказочно обогатиться — это комиссия, которую нужно платить за каждую операцию на бирже. Штраф фиксирован и не зависит от количества акций, с которыми совершается операция. Он взимается до каждой сделки по покупке акций и после каждой сделки по продаже акций. Если у вас недостаточно денег, и вы не можете заплатить комиссию, соответствующая операция не допускается. К концу последнего дня вы должны продать все свои акции. Входные данные В первой строке входного файла даны целые числа N, M и F: количество дней, для которых известна цена акций (1 ≤ N ≤ 105), сумма денег, которая у вас есть в начале первого дня (1 ≤ M ≤ 105) и величина комиссии F (1 ≤ F ≤ 105), взимаемой за каждую операцию. В следующих N строках даны целые числа Pi (1 ≤ Pi ≤ 105) — цена акции в i-й день. Гарантируется, что входные данные таковы, что ответ на задачу меньше 1018. Выходные данные Выведите максимальную сумму денег, которая у вас может оказаться через N дней. Примеры Входные данные 3 10000 1 4000 4004 4002 3 10000 1 4001 4000 4004 Выходные данные 10006 10006 Страница 2 из 2