eolymp
bolt
Try our new interface for solving problems
Məsələlər

Генераторы

Генераторы

Маленький Роман изучает линейные конгруэнтные генераторы - один из старейших и наиболее известных алгоритмов генерации псевдослучайных чисел. Линейный конгруэнтный генератор (ЛКГ) начинает свою работу с неотрицательного целого числа x0 известного как семя и производит бесконечную последовательность неотрицательных целых чисел xi (0xi < c), которые задаются следующим рекуррентным соотношением:

xi+1 = (a *xi + b) mod c

здесь a, b и c - неотрицательные целые и 0x0 < c.

Роману любопытны соотношения между последовательностями, полученными разными ЛКГ. У него имеется n различных ЛКГ с параметрами aj, bj и cj для 1jn, где j-ый ЛКГ генерирует последовательность xj[i]. Он хочет выбрать одно число из каждой последовательности сгенерированной каждой ЛКГ так чтобы их сумма была наибольшей, но не делится на заданное число k. Формально, Роман хочет найти такие целые числа tj0 для 1jn, которые максимизируют

prb7567.gif

при условии что s mod k0.

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

Первая строка содержит два целых числа n и k (1n10 000, 1k109). Следующие n строк характеризуют ЛКГ. Каждая строка содержит четыре числа xj[0] , aj, bj и cj (0aj, bj1000, 0xj[0] < cj1000).

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

Если задача Романа имеет решение, то в первой строке вывести число s - значение наибольшей суммы, не делящейся на k, а во второй строке вывести n чисел tj (0tj109) задающих некоторое решение для выведенной суммы.

Иначе в отдельной строке выведите -1.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
2 3
1 1 1 6
2 4 0 5
Çıxış verilənləri #1
8
4 1
Giriş verilənləri #2
2 2
0 7 2 8
2 5 0 6
Çıxış verilənləri #2
-1
Mənbə 2015 ACM NEERC, Semifinals, December 6, Problem G