Heu d’implementar un programa que manega persones i els anys que tenen. Hi haurà comandes que afegeixen una persona nova indicant quants anys té, comandes que demanen escriure el nombre de persones o la llista de persones amb uns certs anys, i comandes que indiquen que una certa persona celebra el seu aniversari, de manera que els seus anys s’incrementen en una unitat.
Més detalladament, hi ha comandes que afegeixen persones noves i la seva edat (atenció, aquestes comandes d’entrada poden no ser consistents amb la nostra realitat, doncs pot ser el cas que algú tingui una edat arbitràriament gran). Per exemple:
NEWPERSON maria.lapuente 18 NEWPERSON john.smith 23 NEWPERSON nuria.margalef 20 NEWPERSON laura.venture 18 NEWPERSON joel.cabas 21 NEWPERSON pau.margallo 17 NEWPERSON oscar.hoipoi 19
També hi ha comandes que indiquen que algú celebra el seu aniversari, cas en el qual, el seu nombre d’anys s’incrementa en 1 (atenció, aquestes comandes d’entrada poden no ser consistents amb la nostra realitat, doncs pot ser el cas que algú celebri aniversari dos cops abans que algú altri ho faci una sola vegada):
BIRTHDAY maria.lapuente BIRTHDAY pau.margallo BIRTHDAY maria.lapuente BIRTHDAY oscar.hoipoi
També hi ha comandes que demanen quantes persones amb una certa edat hi ha:
NUMBERWITHAGE 18 NUMBERWITHAGE 19 NUMBERWITHAGE 20 NUMBERWITHAGE 23
Incloent les comandes prèvies, la sortida seria aquesta:
2 0 3 1
També hi ha comandes que demanen la llista de persones amb una certa edat, en ordre lexicogràfic:
PEOPLEWITHAGE 18 PEOPLEWITHAGE 19 PEOPLEWITHAGE 20 PEOPLEWITHAGE 23
Incloent les comandes prèvies, la sortida seria aquesta:
laura.venture pau.margallo maria.lapuente nuria.margalef oscar.hoipoi john.smith
Observació: Podeu seguir l’enfoc que considereu oportú, i podeu utilitzar qualsevol de les classes presentades al curs (string, vector, stack, queue, list, map, set) de la manera que considereu oportuna. Però tingueu en compte que la vostra elecció pot afectar a l’eficiència de la vostra solució, i per tant al fet de poder superar tots els jocs de proves o només els públics (cosa que us deixarà amb la meitat de la nota).
Entrada
Cada linia de l’entrada consisteix en una instrucció del següent tipus, a on person es pot llegir com string no buit qualsevol, i té menys de 20 caràcters, i natural és un natural qualsevol:
Se suposa que les dades son correctes en el sentit que NEWPERSON no afegeix persones que ja han estat afegides abans, i que BIRTHDAY s’aplica a persones que ja han estat afegides abans.
Sortida
Per a cada instrucció NUMBERWITHAGE natural, s’escriurà una línia per la sortida amb el nombre de persones amb l’edat indicada.
Per a cada instrucció PEOPLEWITHAGE, s’escriurà una línia per la sortida amb totes les persones de l’edat indicada, ordenada lexicogràficament, i separada per espais en blanc.
Observació
Avaluació sobre 10 punts:
Entenem com a solució ràpida una que és correcta, de cost nlog(n) o inferior, i capaç de superar els jocs de proves públics i privats. Entenem com a solució lenta una que no és ràpida, però és correcta i capaç de superar els jocs de proves públics.
Input
NEWPERSON merce.nice 18 NEWPERSON jose.mola 16 BIRTHDAY merce.nice BIRTHDAY jose.mola BIRTHDAY jose.mola NEWPERSON joel.cabas 19 BIRTHDAY merce.nice NEWPERSON laura.venture 17 PEOPLEWITHAGE 17 BIRTHDAY joel.cabas PEOPLEWITHAGE 17 PEOPLEWITHAGE 20 NEWPERSON sandra.rain 18 BIRTHDAY jose.mola NEWPERSON manel.rueda 20 PEOPLEWITHAGE 20 BIRTHDAY jose.mola BIRTHDAY joel.cabas BIRTHDAY merce.nice BIRTHDAY joel.cabas BIRTHDAY laura.venture BIRTHDAY manel.rueda BIRTHDAY laura.venture NUMBERWITHAGE 20 PEOPLEWITHAGE 22 BIRTHDAY merce.nice BIRTHDAY joel.cabas NEWPERSON nuria.margalef 19 PEOPLEWITHAGE 20 BIRTHDAY sandra.rain NUMBERWITHAGE 22 BIRTHDAY sandra.rain NUMBERWITHAGE 22 BIRTHDAY merce.nice BIRTHDAY manel.rueda BIRTHDAY merce.nice PEOPLEWITHAGE 17 PEOPLEWITHAGE 20 BIRTHDAY laura.venture PEOPLEWITHAGE 20 NEWPERSON angels.herrero 17 BIRTHDAY manel.rueda PEOPLEWITHAGE 19 BIRTHDAY sandra.rain BIRTHDAY jose.mola BIRTHDAY sandra.rain BIRTHDAY jose.mola NUMBERWITHAGE 22 BIRTHDAY merce.nice BIRTHDAY sandra.rain BIRTHDAY angels.herrero BIRTHDAY jose.mola NUMBERWITHAGE 20 BIRTHDAY angels.herrero BIRTHDAY merce.nice BIRTHDAY merce.nice BIRTHDAY jose.mola BIRTHDAY sandra.rain PEOPLEWITHAGE 19 BIRTHDAY manel.rueda BIRTHDAY nuria.margalef BIRTHDAY joel.cabas PEOPLEWITHAGE 24 BIRTHDAY manel.rueda BIRTHDAY manel.rueda BIRTHDAY nuria.margalef NUMBERWITHAGE 24 BIRTHDAY merce.nice BIRTHDAY manel.rueda BIRTHDAY merce.nice BIRTHDAY sandra.rain BIRTHDAY nuria.margalef NUMBERWITHAGE 27 BIRTHDAY jose.mola BIRTHDAY manel.rueda BIRTHDAY manel.rueda BIRTHDAY sandra.rain BIRTHDAY joel.cabas NUMBERWITHAGE 29 PEOPLEWITHAGE 29
Output
laura.venture laura.venture joel.cabas merce.nice joel.cabas manel.rueda merce.nice 1 joel.cabas jose.mola 1 1 jose.mola sandra.rain jose.mola laura.venture sandra.rain nuria.margalef 2 1 angels.herrero nuria.margalef joel.cabas jose.mola manel.rueda sandra.rain 3 1 2 manel.rueda merce.nice
Input
PEOPLEWITHAGE -1 NEWPERSON joel.cabas 1 PEOPLEWITHAGE 1 NEWPERSON sandra.rain 2 PEOPLEWITHAGE 3 PEOPLEWITHAGE 1 NUMBERWITHAGE 1 PEOPLEWITHAGE 2 NEWPERSON merce.nice 2 NUMBERWITHAGE 2 PEOPLEWITHAGE 1 NUMBERWITHAGE 2 PEOPLEWITHAGE 2 PEOPLEWITHAGE 1 PEOPLEWITHAGE 2 NUMBERWITHAGE 2 NUMBERWITHAGE 2 PEOPLEWITHAGE 0 NUMBERWITHAGE 2 BIRTHDAY joel.cabas BIRTHDAY merce.nice NUMBERWITHAGE 2 NEWPERSON laura.venture 3 NUMBERWITHAGE 2 PEOPLEWITHAGE 2 PEOPLEWITHAGE 3 BIRTHDAY joel.cabas NUMBERWITHAGE 3 PEOPLEWITHAGE 3 PEOPLEWITHAGE 3 BIRTHDAY joel.cabas PEOPLEWITHAGE 3 NUMBERWITHAGE 3 PEOPLEWITHAGE 2 NUMBERWITHAGE 2 BIRTHDAY joel.cabas NEWPERSON nuria.margalef 2 NEWPERSON jose.mola 1 BIRTHDAY jose.mola BIRTHDAY laura.venture PEOPLEWITHAGE 4 PEOPLEWITHAGE 2 NEWPERSON angels.herrero 3 BIRTHDAY jose.mola NEWPERSON manel.rueda 1 NUMBERWITHAGE 4 BIRTHDAY joel.cabas PEOPLEWITHAGE 3 PEOPLEWITHAGE 3 BIRTHDAY nuria.margalef PEOPLEWITHAGE 1 BIRTHDAY laura.venture NUMBERWITHAGE 2 PEOPLEWITHAGE 5 PEOPLEWITHAGE 3 BIRTHDAY sandra.rain NUMBERWITHAGE 3 NUMBERWITHAGE 3 NUMBERWITHAGE 6 PEOPLEWITHAGE 5 BIRTHDAY joel.cabas PEOPLEWITHAGE 3 PEOPLEWITHAGE 3 PEOPLEWITHAGE 3 PEOPLEWITHAGE 3 BIRTHDAY manel.rueda PEOPLEWITHAGE 3 BIRTHDAY nuria.margalef PEOPLEWITHAGE 3 NUMBERWITHAGE 7 BIRTHDAY merce.nice BIRTHDAY joel.cabas BIRTHDAY manel.rueda NUMBERWITHAGE 4 PEOPLEWITHAGE 3 BIRTHDAY angels.herrero NUMBERWITHAGE 3 NUMBERWITHAGE 8 NUMBERWITHAGE 5 PEOPLEWITHAGE 0
Output
joel.cabas joel.cabas 1 sandra.rain 2 joel.cabas 2 merce.nice sandra.rain joel.cabas merce.nice sandra.rain 2 2 2 2 2 joel.cabas sandra.rain laura.venture merce.nice 3 joel.cabas laura.venture merce.nice joel.cabas laura.venture merce.nice laura.venture merce.nice 2 sandra.rain 1 laura.venture jose.mola nuria.margalef sandra.rain 1 angels.herrero jose.mola merce.nice angels.herrero jose.mola merce.nice manel.rueda 1 laura.venture angels.herrero jose.mola merce.nice nuria.margalef 5 5 1 laura.venture angels.herrero jose.mola merce.nice nuria.margalef sandra.rain angels.herrero jose.mola merce.nice nuria.margalef sandra.rain angels.herrero jose.mola merce.nice nuria.margalef sandra.rain angels.herrero jose.mola merce.nice nuria.margalef sandra.rain angels.herrero jose.mola merce.nice nuria.margalef sandra.rain angels.herrero jose.mola merce.nice sandra.rain 1 2 angels.herrero jose.mola manel.rueda sandra.rain 3 1 1