Masala #0554

Xotira 16 MB Vaqt 1000 ms Qiyinchiligi 20 %
14

  

Z - massivni hosil qilish #2

Sizga \(s\) satr berilgan bo’lib, bu satr orqali \(Z\) massivni hosil qilish so’raladi.

\(Z\) massivni hosil qilish quyidagicha amalga oshiriladi. 

  • \(Z\) massiv elementlari soni satr elementlari soniga teng bo'ladi va \(Z\) massivning dastlabki qiymati uchun \(0\) olinadi ya'ni \(Z[0] = 0\)
  • \(Z[i] (i=1,2,...,len(s)-1)\) ni hosil qilish uchun \(s\) satrning \(i-index\)dan \(s[i...j] (i\leq j)\) boshlanuvchi eng uzun quyi satr topiladi, \(s\) satrning prefiks ga teng bo'lsin.
  • Topilgan bu sub satr uzunligi \(Z[i]\) ga yoziladi (bunday satr mavjud bo'lmasa \(0\) qiymati olinadi).

Prefiks bu satrning \(0-index\)dan \(s[0...j] (0\leq j)\) boshlanuvchi sub satrga aytiladi. Misol: \(s = "abac"\) satrning prefikslari \(a\), \(ab\)\(aba\) va \(abac\)


Kiruvchi ma'lumotlar:

Kirish faylida lotin alfbosining kichik harflaridan tashkil topgan \(s(1\leq |s|\leq 10^6)\) satr beriladi.


Chiquvchi ma'lumotlar:

Chiqish faylida \(Z\) massiv elementlarini probel bilan ajratilgan holda bitta satrda chop eting.


Misollar
# input.txt output.txt
1
aabcaabc
0 1 0 0 4 1 0 0
2
aaaaaaa
0 6 5 4 3 2 1
Yechimini yuborish
Bu amalni bajarish uchun tizimga kiring, agar profilingiz bo'lmasa istalgan payt ro'yxatdan o'tishingiz mumkin