Heu d’implementar un programa que manegui un conjunt de persones, i cuantes monedes té cada persona. El conjunt està inicialment buit. Tindrem instruccions per afegir una persona al conjunt i una indicació de cuantes monedes té. També tindrem instruccions per a eliminar una persona del conjunt. I també tindrem instruccions que ens demanen que escrivim per la sortida cuantes persones hi ha en un moment donat en el conjunt amb una certa cuantitat de monedes fixada. Fixeu-vos en la descripció de l’entrada i la sortida d’aquest exercici per a veure’n els detalls.
Observació: Podeu seguir l’enfoc que considereu oportú, i podeu utilitzar qualsevol de les estructures de dades presentades al curs (string, vector, stack, queue, list, map) 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).
Cada linia de l’entrada consisteix en una instrucció del següent
tipus, a on name és un string no buit
qualsevol de menys de 20 caràcters, i numcoins és un natural positiu
qualsevol que cap en una variable de tipus
int:
ADD name numcoins
DELETE name
NUMPEOPLE numcoins
La instrucció ADD name numcoins ens demana
que afegim algú anomenat name al conjunt, i
que aquesta persona nova té numcoins
monedes.
La instrucció DELETE name ens demana que
eliminem algú anomenat name del conjunt.
La instrucció NUMPEOPLE numcoins ens demana
que escrivim per la sortida el nombre actual de persones del conjunt que
tenen exactament numcoins monedes.
Podem suposar que les entrades son tals que els noms de persones
s’utilitzen com a molt un cop i de forma coherent, és a dir: donat un
name concret, podem suposar que hi haurà com a
molt una instrucció ADD name numcoins i com a
molt una instrucció DELETE name. A més a més,
si apareix una instrucció DELETE name,
necessàriament haurà aparegut abans un
ADD name numcoins amb el mateix
name.
Per a cada instrucció NUMPEOPLE numcoins,
s’escriurà una línia per la sortida amb el nombre actual de persones que
tenen numcoins monedes.
Avaluació sobre 10 punts:
Solució lenta: 5 punts.
solució ràpida: 10 punts.
Entenem com a solució ràpida una que és correcta, de cost 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
NUMPEOPLE 10 NUMPEOPLE 15 ADD laura 46 ADD david 46 ADD sonia 46 DELETE laura ADD carles 46 ADD sandra 10 ADD joel 15 DELETE sonia ADD nuria 46 NUMPEOPLE 15 ADD hector 15 NUMPEOPLE 46 ADD merce 46 ADD oscar 15 NUMPEOPLE 15 DELETE joel DELETE merce DELETE hector NUMPEOPLE 46 DELETE oscar DELETE david DELETE carles DELETE sandra NUMPEOPLE 10 NUMPEOPLE 46 DELETE nuria NUMPEOPLE 46
Output
0 0 1 3 3 3 0 1 0