Easy Suffix Array

Time Limit:
4 Sec
Memory Limit:
128Mb
Enviados:
676
Resuelto:
503

Descripción

En Ciencias de la Computación un arreglo de sufijos es un arreglo ordenado de todos los sufijos de una cadena dada. Esta estructura de datos es muy simple, pero sin embargo es muy poderosa y es usada en algoritmos de compresión de datos y dentro del campo de la bioinformática , indización de textos completos, entre otros.

Por ejemplo dada la cadena "banana" los sufijos de esta cadena son:

  • -"banana"
  • -"anana"
  • -"nana"
  • -"ana"
  • -"na"
  • -"a"

Y si los ordenamos lexicograficamente tendriamos:

  • "a"
  • "ana"
  • "anana"
  • "banana"
  • "na"
  • "nana"

El array {"a", "ana", "anana", "banana", "na", "nana"} seria el suffix array de la cadena "banana".
Te pedimos obtener el suffix array de una cadena dada en la entrada, existen algoritmos muy eficientes para obtener el suffix array de una cadena pero en esta ocasión no estamos interesados en ellos.

Entrada

Una sola cadena $S$ sin espacios de longitud $N$ ($1 <= N <= 100$). La cadena solo consta de letras minusculas.

Salida

N cadenas, una cadena en cada linea, las cuales representan el suffix array de la cadena de la entrada.

Ejemplo Entrada

Copy icon
banana

Ejemplo Salida

Copy icon
a
ana
anana
banana
na
nana

Ayuda

La función compareTo para cadenas(tipo de variables String) de Java compara lexicograficamente.