Tenim números de telèfons que van rebent trucades en una hora determinada. Un telèfon pot rebre trucades en qualsevol hora, amb repeticions i sense cap tipus d’ordre. Volem saber quan un telèfon ha rebut almenys 3 trucades en 4 hores diferents. Per exemple, si tenim el telèfon 666102030, suposeu que rebi aquestes trucades:
666102030 15:45 666102030 09:45 666102030 15:10 666102030 14:00 666102030 19:01 666102030 14:45 666102030 11:45 666102030 15:22 666102030 09:09 666102030 10:45 666102030 20:22 666102030 11:21 666102030 14:22 666102030 19:45 666102030 11:42 666102030 15:11 666102030 10:43 666102030 13:45 666102030 17:40 666102030 19:51
Just després de la darrera trucada 666102030 19:51,
aquest telèfon ha rebut 2 trucades a les 9h,
2 trucades a les 10h,
3 trucades a les 11h,
1 trucada a les 13h,
3 trucades a les 14h,
4 trucades a les 15h,
1 trucada a les 17h,
3 trucades a les 19h i
1 trucada a les 20h.
i, per tant, té 4 hores diferents (11h, 14h, 15h, 19h) amb almenys 3 trucades.
Just en aquest moment, cal treure aquest telèfon pel canal de sortida.
Com podeu veure, el fet que hi hagi una hora (15h) amb més de 3 trucades
no importa, simplement cal que almenys tingui 3 trucades.
Cal fer un programa que tregui pel canal de sortida els números de telèfon tan aviat com compleixin aquesta condició: tenen 4 hores diferents amb almenys 3 trucades. L’entrada té aquest format:
telefon, hora. Tot telèfon en la llista de trucades haurà aparegut a la primera llista ordenada de telèfons.
Tingueu en compte que el telèfon es pot considerar un enter i que l’hora consisteix en un enter (l’hora), un caràcter (el separador :) i un enter (els minuts).
Un exemple de l’entrada podria ser aquest:
3 666321000 934500000 979808080 979808080 15:45 666321000 19:01 934500000 09:09 979808080 14:22 666321000 10:43 ...
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.
Aquest problema tindrà les següents penalitzacions (a la correcció manual segons els criteris de correcció):
En cas que no completeu l’algoritme, la nota manual la decidirà el corrector depenent del que hagueu arribat a fer.
Entrada
L’entrada és:
telefon hora separats per un espai.
Sortida
Els nombres de telèfon que compleixen aquesta condició: tenir almenys 4 hores diferents amb almenys 3 trucades. Important: cal que apareguin tan aviat com compleixin aquesta condició.
Input
10 666000001 666000002 666000003 666000004 666000005 666000006 666000007 666000008 666000009 666000010 666000001 10:10 666000002 10:10 666000003 10:10 666000004 10:10 666000005 10:10 666000006 10:10 666000007 10:10 666000008 10:10 666000009 10:10 666000010 10:10 666000001 11:10 666000001 12:10 666000001 14:10 666000001 15:10 666000006 11:10 666000006 12:10 666000006 14:10 666000006 15:10 666000001 11:10 666000001 12:10 666000001 14:10 666000001 15:10 666000001 11:10 666000001 12:10 666000001 14:10 666000001 15:10 666000001 11:10 666000001 12:10 666000001 14:10 666000001 15:10 666000004 10:10 666000005 10:10 666000006 10:10 666000007 10:10 666000008 10:10 666000004 10:10 666000005 10:10 666000006 10:10 666000007 10:10 666000008 10:10 666000004 11:10 666000005 11:10 666000006 11:10 666000007 11:10 666000008 11:10 666000004 11:10 666000005 11:10 666000006 11:10 666000007 11:10 666000008 11:10 666000004 11:10 666000005 11:10 666000006 11:10 666000007 11:10 666000008 11:10 666000004 11:10 666000005 11:10 666000006 11:10 666000007 11:10 666000008 11:10 666000004 11:10 666000005 11:10 666000006 11:10 666000007 11:10 666000008 11:10 666000004 16:10 666000005 16:10 666000006 16:10 666000007 16:10 666000008 16:10 666000004 16:10 666000005 16:10 666000006 16:10 666000007 16:10 666000008 16:10 666000004 16:10 666000005 16:10 666000006 16:10 666000007 16:10 666000008 16:10 666000004 16:10 666000005 16:10 666000006 16:10 666000007 16:10 666000008 16:10 666000004 16:10 666000005 16:10 666000006 16:10 666000007 16:10 666000008 16:10 666000004 16:10 666000005 16:10 666000006 16:10 666000007 16:10 666000008 16:10 666000004 20:10 666000005 20:10 666000006 20:10 666000007 20:10 666000008 20:10 666000004 20:10 666000005 20:10 666000006 20:10 666000007 20:10 666000008 20:10 666000004 20:10 666000005 20:10 666000006 20:10 666000007 20:10 666000008 20:10 666000004 20:10 666000005 20:10 666000006 20:10 666000007 20:10 666000008 20:10 666000004 20:10 666000005 20:10 666000006 20:10 666000007 20:10 666000008 20:10 666000004 20:10 666000005 20:10 666000006 20:10 666000007 20:10 666000008 20:10
Output
666000001 666000004 666000005 666000006 666000007 666000008