Agrupar anagramas

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 9
Dificultad Medio Algoritmos
Mostrar (3) CadenasOrdenamientoTablas hash
Enviar solución

Puntos: 10

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Dada una lista de palabras en minúsculas, agrúpalas de modo que cada grupo contenga exactamente las palabras que son anagramas entre sí (las mismas letras, con las mismas cantidades, en cualquier orden). Una palabra repetida aparece tantas veces como esté en la lista.

Para que la salida sea única: dentro de cada grupo, las palabras van ordenadas lexicográficamente, y los grupos van ordenados por su primera palabra.

Entrada

La primera línea tiene \(n\) \((1 \le n \le 10^4)\). La segunda tiene las \(n\) palabras, de entre \(1\) y \(100\) letras minúsculas. La suma de los largos es a lo más \(10^5\).

Salida

La primera línea tiene la cantidad de grupos \(g\). Cada una de las siguientes \(g\) líneas tiene las palabras de un grupo, separadas por espacios.

Ejemplo 1

Entrada

6
eat tea tan ate nat bat

Salida

3
ate eat tea
bat
nat tan

Ejemplo 2

Entrada

1
a

Salida

1
a

Ejemplo 3

Entrada

4
ab ba ab c

Salida

2
ab ab ba
c

Comentarios

No hay comentarios por el momento.