Ağacın dərinliyi#10295

Ağacın dərinliyi

1 saniyə
128 meqabayt
Çox asan

Yeni il üçün fermer Con inəklərinə bayram ikili axtarış ağacı (İAA) hədiyyə etmək qərarına gəldi!

İAA yaratmaq üçün FC a = {a[1], a[2],..., a[n]} tam ədədlərinin 1 ... n-dən ibarət permutasiyası ilə başlayır, burada n ≤ 300. Sonra o, aşağıdakı psevdokodu 1 və n arqumentləri ilə işə salır.

generate(l,r):
  if l > r, return boş alt-ağac;
  x = argmin_{l <= i <= r} a_i; // {a_l,...,a_r} arasında min a_i indeks
  return İAA x kökdə olmaqla, 
    generate(l,x-1) sol alt-ağac kimi,
    generate(x+1,r) sağ alt-ağac kimi;

Məsələn, {3, 2, 5, 1, 4} permutasiyası aşağıdakı İAA yaradır:

    4
   / \
  2   5
 / \ 
1   3

d[i](a) a-ya uyğun ağacda i düyününün dərinliyini ifadə edir, yəni a[i]-dən kökə qədər olan yol üzərindəki düyünlərin sayını göstərir. Yuxarıdakı nümunədə d[4](a) = 1, d[2](a) = d[5](a) = 2, və d[1](a) = d[3](a) = 3.

a-nın inversiyalarının sayı 1 ≤ i < j ≤ n və a[i] > a[j] olan tam ədəd cütlərinin (i, j) sayına bərabərdir. İnəklər bilirlər ki, FC İAA yaratmaq üçün istifadə edəcəyi a-nın dəqiq k inversiyası var (0 ≤ k ≤ n * (n − 1) / 2). Bu şərti ödəyən bütün a üçün hər bir 1 ≤ i ≤ n üçün ∑a d[i](a)-nın m-ə bölünməsindən alınan qalıq hesablanmalıdır.

Giriş məlumatları

Yeganə sətir üç tam ədəd n, k və m-dən ibarətdir. m [10^8, 10^9 + 9] aralığında sadə ədəddir.

Çıxış məlumatları

Hər bir 1 ≤ i ≤ n üçün ∑a d[i](a) (mod m) bərabər olan n tam ədəd çıxarın.

Nümunə 1

Yeganə permutasiya a = {1, 2, 3} olacaq.

Nümunə 2

İki permutasiya var: a = {1, 3, 2} və a = {2, 1, 3}.

Nümunələr

Nümunə 1

Loading
Loading

Nümunə 2

Loading
Loading