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 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 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 , identificat pel seu dni, escrigui la seva hora d’arribada. Cal tenir en compte:
Alguns dels inscrits de no aconsegueixen acabar. En aquest cas, no apareixen a .
Si acaben dos o més participants amb el mateix nom, i algun d’ells estava a , llavors no és possible conèixer amb certesa la seva hora d’arribada.
Si un nom de apareix un cop a , 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
de l’entrada, noms repetits inclosos.
L’entrada té i separades amb una línia en blanc. comença amb un natural , i segueix amb línies, cadascuna amb un nom i una hora. té una sèrie de parells dni nom. està ordenada per nom. Aquest és l’únic camp de l’entrada amb possibles repetits. Per comoditat, tracteu tota l’entrada (excepte ) com si fossin strings.
Per a cada dni de cada línia de
,
escriviu una línia amb la seva hora d’arribada, "???" o bé
"ABANDONA" segons convingui. Segui el format dels
exemples.
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.
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