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

Глубина дерева

Глубина дерева

На Новый год фермер Джон решил подарить своим коровам праздничное бинарное дерево поиска (БДП)!

Чтобы сгенерировать БДП, ФД начинает с перестановки a = {a1, a2,..., an} целых чисел 1 ... n, где n300. Затем он запускает следующий псевдокод с аргументами 1 и n.

generate(l,r):
  if l > r, return пустое поддерево;
  x = argmin_{l <= i <= r} a_i; // индекс min a_i in {a_l,...,a_r}
  return БДП с x в корне, 
    generate(l,x-1) как левое поддерево,
    generate(x+1,r) как правое поддерево;

Например, перестановка {3, 2, 5, 1, 4} генерирует следующее БДП:

    4
   / \
  2   5
 / \ 
1   3

Пусть di(a) обозначает глубину узла i в дереве, соответствующего a, что означает количество узлов на пути от ai до корня. В приведенном выше примере d4(a) = 1, d2(a) = d5(a) = 2, и d1(a) = d3(a) = 3..

Количество инверсий a равно количеству пар целых чисел (i, j) таких, что 1i < jn и ai > aj. Коровы знают, что a, которое ФД будет использовать для генерации БДП, имеет ровно k инверсий (0kn * (n1) / 2). Для всех a, удовлетворяющих этому условию, вычислить остаток от деления ∑a di(a) на m для каждого 1in.

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

Единственная строка состоит из трех целых чисел n, k и m. m является простым числом в диапазоне [108, 109 + 9].

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

Выведите n целых чисел, равных ∑a di(a) (mod m) для каждого 1in.

Пример 1

Единственной перестановкой будет a = {1, 2, 3}.

Пример 2

Имеются две перестановки a = {1, 3, 2} и a = {2, 1, 3}.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
3 0 192603497
Çıxış verilənləri #1
1 2 3
Giriş verilənləri #2
3 1 144408983
Çıxış verilənləri #2
3 4 4
Mənbə 2019 USACO Декабрь Платина