F013A. Matagalls-Montserrat P35487


Statement
 

pdf   zip

html

Una coneguda caminada popular és molt dura, i alguns dels inscrits no la poden acabar. D’altra banda, n’hi ha que hi participen sense haver-s’hi inscrit.

Els organitzadors disposen d’aquesta informació:

  • Una llista L1 amb els noms dels qui van acabar (estiguessin inscrits o no), junt amb l’hora d’arribada. Aquesta llista està ordenada per nom, i totes les hores són diferents.
  • Una llista desordenada L2 amb el dni i el nom dels participants inscrits. Cap dels noms i cap dels dnis no està repetit.

Feu un programa que, per a cada participant de L2, identificat pel seu dni, escrigui la seva hora d’arribada. Cal tenir en compte:

  • Alguns dels inscrits de L2 no aconsegueixen acabar. En aquest cas, no apareixen a L1.
  • Si acaben dos o més participants amb el mateix nom, i algun d’ells estava a L2, llavors no és possible conèixer amb certesa la seva hora d’arribada.
  • Si un nom de L2 apareix un cop a L1, se suposa que es correspon a la mateixa persona.

Per resoldre aquest problema, useu la definició següent:

struct Info { string nom, hora; };

Usant aquesta definició, implementeu i useu una funció eficient

string busca(string nom, const vector<Info>& v) {

que retorni l’hora corresponent a nom dins de la taula ordenada per nom v. Si nom hi està repetit, cal retornar "???". Si nom no hi és, cal retornar "ABANDONA". Aquesta v ha de contenir tota la informació de la L1 de l’entrada, noms repetits inclosos.

Entrada

L’entrada té L1 i L2 separades amb una línia en blanc. L1 comença amb un natural n, i segueix amb n línies, cadascuna amb un nom i una hora. L2 té una sèrie de parells dni nom. L1 està ordenada per nom. Aquest és l’únic camp de l’entrada amb possibles repetits. Per comoditat, tracteu tota l’entrada (excepte n) com si fossin strings.

Sortida

Per a cada dni de cada línia de L2, escriviu una línia amb la seva hora d’arribada, "???" o bé "ABANDONA" segons convingui. Segui el format dels exemples.

Observació

El vostre programa ha de ser eficient. Les solucions que no ho siguin seran rebutjades, ja sigui directament pel Jutge o en la posterior correcció manual.

Public test cases
  • Input

    12
    amalia 20:30:23
    antoni 08:00:04
    carles 12:45:32
    carles 15:20:00
    carles 10:10:12
    edgar 13:30:48
    marta 14:00:59
    pepito 18:30:56
    pepito 18:25:15
    quim 17:30:18
    rafel 11:25:34
    rafel 11:30:10
    
    33333333 edgar
    11111111 pep
    22222222 antoni
    00001234 carles
    12345678 xavier
    40000000 marta
    77777777 alicia
    88888888 rafel
    44444444 amalia
    

    Output

    33333333 13:30:48
    11111111 ABANDONA
    22222222 08:00:04
    00001234 ???
    12345678 ABANDONA
    40000000 14:00:59
    77777777 ABANDONA
    88888888 ???
    44444444 20:30:23
    
  • Input

    0
    
    22222222 rigoberta
    00000000 bonifacia
    11111111 segismunda
    

    Output

    22222222 ABANDONA
    00000000 ABANDONA
    11111111 ABANDONA
    
  • Input

    1
    arnau 15:03:20
    

    Output

    
            
                                
  • Input

    0
    

    Output

    
            
                                
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++