String Functions.


Submit solution

Points: 100 (partial)
Time limit: 2.0s
Memory limit: 512M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, Brain****, C, C#, C++, COBOL, D, Dart, F#, Forth, Fortran, Go, Groovy, Haskell, Java, JS, Kotlin, Lisp, Lua, ObjC, OCaml, Pascal, Perl, PHP, Pike, Prolog, Python, Racket, Ruby, Rust, Scala, Scheme, Sed, Swift, TCL, Text, Turing, VB, Zig

Consideremos una cadena de n caracteres, indexada del 1 al n. Su tarea consiste en calcular todos los valores de las siguientes funciones:

  • z(i) representa la longitud máxima de una subcadena que comienza en la posición i y es un prefijo de la cadena. Además, z(1) = 0.
  • \pi(i) representa la longitud máxima de una subcadena que termina en la posición i, es un prefijo de la cadena y cuya longitud es como máximo i-1.

Tenga en cuenta que la función z se utiliza en el algoritmo Z, y la función \pi(i) en el algoritmo KMP.

Entrada

La única línea de entrada contiene una cadena de longitud n. Cada carácter está entre la a y la z.

Salida

Imprima dos líneas: primero los valores de la función z y luego los valores de la función \pi(i).

Restricciones

  • 1 \leq n \leq 10^6

Ejemplo de Entrada

abaabca

Ejemplo de Salida

0 0 1 2 0 0 1
0 0 1 1 2 0 1

Comments

There are no comments at the moment.