Trucades a cada hora S64919


Statement
 

pdf   zip

thehtml

Disposem d’un llistat desordenat de trucades a un conjunt limitat de telèfons, i per a cada trucada tenim el número de telèfon i l’hora d’inici de la trucada. El llistat té el format:

3 
666321000 934500000 979808080

979808080 15:45
666321000 19:01
934500000 09:09
979808080 14:22
666321000 10:43
...

Al principi, se’ns dóna una seqüència amb el conjunt de telèfons d’interès, ordenats pel seu valor numèric de menor a major. La seqüència comença amb el número total de telèfons, que és sempre major que 0 (el 3 de la primera línia), i després venen els números de telèfon, tots de 9 xifres. A continuació, després d’una línia buida, ve una seqüència sense sentinella de trucades. Cada trucada és una línia, i el número de telèfon és al principi de la línia i després hi ha l’hora de la trucada en format HH:MM, separada per un sol espai.

Fes un programa que llegeix aquestes dades i produeix a la sortida la llista de telèfons que han rebut almenys una trucada a cada hora del rellotge, és a dir, que tenen una o més trucades per a cada valor diferent de les hores (de 0 a 23). Cal dissenyar el programa tenint en compte que el llistat de trucades és, típicament, entre un i dos ordres de magnitud més gran que el conjunt de telèfons.

Observació

Aquest problema té com a centre d’interès l’eficiència. Feu servir els millors algorismes i estructures de dades que pogueu i considereu que rebreu dades d’entrada de grans dimensions.

En aquest problema, si feu servir vectors, és important donar-los la dimensió des del principi per no haver de fer push_back, ja que això pot afectar al temps d’execució.

Entrada

L’entrada és el llistat explicat més amunt.

Sortida

La sortida és un llistat de telèfons, un per línia, per ordre numèric creixent. Si no hi ha cap telèfon que hagi rebut trucades a totes les hores del dia, cal mostrar la frase "Empty" en una línia.

Public test cases
  • Input

    2
    666000666 944554455
    
    666000666 00:02
    666000666 01:59
    666000666 02:41
    666000666 03:45
    666000666 04:54
    666000666 05:01
    666000666 06:03
    666000666 07:01
    666000666 08:02
    666000666 09:35
    666000666 10:09
    666000666 11:11
    666000666 12:12
    666000666 13:45
    666000666 14:05
    666000666 15:07
    666000666 16:58
    666000666 17:29
    666000666 18:35
    666000666 19:28
    666000666 20:50
    666000666 21:10
    666000666 22:39
    666000666 23:10
    944554455 00:37
    944554455 01:45
    944554455 02:28
    944554455 03:51
    944554455 04:59
    

    Output

    666000666
    
  • Input

    2
    666000666 944554455
    
    666000666 00:30
    666000666 01:39
    666000666 02:26
    666000666 03:42
    944554455 00:04
    944554455 01:21
    944554455 02:31
    944554455 03:48
    944554455 04:50
    

    Output

    Empty
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++