K números más frecuentes X14956


Statement
 

pdf   zip

Dada una secuencia de números naturales entre 1 y 100 000, hay que encontrar los KK números que aparecen con más frecuencia y mostrarlos ordenados de mayor a menor frecuencia. Si dos números tienen la misma frecuencia, hay que mostrar primero el más pequeño.

Por ejemplo, si la secuencia es:

3 1 4 1 5 9 2 6 5 3 5 1

y K=3K = 3, los números más frecuentes son: el 1 (aparece 3 veces), el 5 (aparece 3 veces) y el 3 (aparece 2 veces). Como el 1 y el 5 tienen la misma frecuencia, el 1 va primero porque es más pequeño.

Observación

En este problema el centro de interés es la eficiencia. Hay que encontrar las estructuras de datos adecuadas para resolver el problema en el menor tiempo posible.

Entrada

La entrada consiste en varios casos. Cada caso empieza con dos enteros NN y KK, seguidos de NN números naturales entre 1 y 100 000. La entrada termina con fin de fichero.

Salida

Para cada caso, hay que escribir los KK números más frecuentes, uno por línea, ordenados de mayor a menor frecuencia. Si dos números tienen la misma frecuencia, el más pequeño va primero. Cada caso termina con una línea con ---.

Public test cases
  • Input

    12 3
    3 1 4 1 5 9 2 6 5 3 5 1
    8 2
    7 7 3 3 7 3 1 1
    

    Output

    1
    5
    3
    ---
    3
    7
    ---
    
  • Information
    Author
    Pau Fernández
    Language
    Spanish
    Translator
    Pau Fernández
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++