Задача A. Таблица

advertisement
Личный послеобеденный тур 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
Download