Un suffix array es una tabla donde se guardan, en orden
alfabético, todos los sufijos de una palabra. Por ejemplo: los
sufijos de la palabra MISSISSIPPI son
I, PI, PPI,
IPPI, SIPPI, SSIPPI,
ISSIPPI, SISSIPPI, SSISSIPPI,
ISSISSIPPI, MISSISSIPPI,
que una vez ordenados quedan
I, IPPI, ISSIPPI,
ISSISSIPPI, MISSISSIPPI, PI,
PPI, SIPPI, SISSIPPI,
SSIPPI, SSISSIPPI.
El suffix array de la palabra MISSISSIPPI
es
| 10 | 7 | 4 | 1 | 0 | 9 | 8 | 6 | 3 | 5 | 2 |
|---|
donde se indica que el primer sufijo en orden alfabético es el que
empieza en la posición 10 (o sea, I, teniendo en cuenta que
la palabra tiene 11 letras, con posiciones de la 0 a la 10), seguido del
que empieza en la posición 7 (o sea, IPPI), etc., acabando
con el sufijo que empieza en la posición 2 (o sea,
SSISSIPPI).
Cada entrada contiene una única línea con una palabra formada por letras mayúsculas A-Z. Ninguna palabra tendrá menos de 2 letras.
Escribe, en una línea, el contenido del suffix array de la
palabra. Separa dos elementos consecutivos con espacios, y pon un punto
(.) al final de la línea. !‘No te olvides del salto de
línea!
Hay 10 grupos de entradas. Se dará 10 puntos por resolver correctamente todas las entradas de cada grupo. Las entradas del grupo -ésimo contendrán palabras de no más de , , , , , , , , , letras respectivamente. Se te garantiza que todas las palabras han sido generadas al azar (excepto el Ejemplo 1).
Existen modos muy eficientes de obtener el suffix array de una palabra, incluso para el caso de palabras que no hayan sido generadas al azar. Para resolver este problema no es necesario conocer ninguna de estas construcciones.