Trucades i més Trucades V35552


Statement
 

pdf   zip   tar

thehtml

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:

  1. Un enter N amb el nombre de telèfons diferents que hi haurà.
  2. N nombres de telèfon diferents ordenats.
  3. Un nombre indeterminat de trucades, és a dir, de parells 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ó):

  1. Si es fa servir una estructura per a desar dades que no cal emmagatzemar: 5 punts per estructura .
  2. Si no es fan servir els algoritmes més eficients possibles: 5 punts per a cada cas.
  3. Recorregut en comptes de cerca: 8 punts.

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:

  1. Un enter N amb el nombre de telèfons diferents que hi haurà.
  2. N nombres de telèfon diferents ordenats.
  3. Un nombre indeterminat de trucades, és a dir, de parells 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ó.

Public test cases
  • 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
    
  • Information
    Author
    PRO1
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++