Escriviu un programa que llegeix i executa una seqüència d’instruccions que s’apliquen sobre un multiconjunt d’enters inicialment buit. Aquestes instruccions poden afegir noves ocurrències d’enters al multiconjunt o eliminar-les. També poden preguntar pel nombre d’ocurrències d’un enter en el multiconjunt i quins son l’element màxim i mínim actuals del multiconjunt, o la suma de tots els elements del multiconjunt.
Entrada
La entrada consisteix en una seqüència de línies amb instruccions que s’apliquen sobre un multiconjunt que se suposa inicialment buit. Les instruccions son dels següents possibles tipus (a on x representa un enter qualsevol):
add x remove x occurrences x max min sum
La instrucció add afegeix una nova ocurrència de l’enter x al multiconjunt. La instrucció remove elimina una de les ocurrències de l’element x del multiconjunt (es garanteix que hi haurà alguna ocurrència d’aquest x). La instrucció occurrences pregunta quantes ocurrències té l’element x al multiconjunt. Les instruccions max, min i sum pregunten per l’element màxim, mínim, i la suma de tots els elements que hi han actualment en el multiconjunt, respectivament. No es preguntarà pel màxim o el mínim quan no hi ha cap element al multiconjunt.
Sortida
Per a cada petició occurrences x, max, min o sum, la sortida té la resposta en una nova línia.
Observació
Podeu mirar de solucionar aquest exercici amb qualsevol de les estructures de dades presentades al curs, però, en principi, només una solució amb map hauria de ser prou eficient per a superar els jocs de proves privats.
Input
sum add 1 max min sum occurrences 1 occurrences 2 occurrences 3 add 2 max min sum occurrences 1 occurrences 2 occurrences 3 add 2 max min sum occurrences 1 occurrences 2 occurrences 3 add 3 max min sum occurrences 1 occurrences 2 occurrences 3 remove 2 max min sum occurrences 1 occurrences 2 occurrences 3 remove 2 max min sum occurrences 1 occurrences 2 occurrences 3 remove 1 max min sum occurrences 1 occurrences 2 occurrences 3 remove 3 sum occurrences 1 occurrences 2 occurrences 3
Output
0 1 1 1 1 0 0 2 1 3 1 1 0 2 1 5 1 2 0 3 1 8 1 2 1 3 1 6 1 1 1 3 1 4 1 0 1 3 3 3 0 0 1 0 0 0 0
Input
add 1 min max min min add 2 max sum remove 2 remove 1 add 1 max add 6 min add 4 max add 6 add 1 occurrences 6 max add 6 add 4 remove 6 add 4 min max add 8 min sum sum occurrences 4 sum occurrences 1 sum add 8 occurrences 4 occurrences 1 add 1 occurrences 8 max sum min add 1 remove 1 max sum remove 4 min max
Output
1 1 1 1 2 3 1 1 6 2 6 1 6 1 34 34 3 34 2 34 3 2 2 8 43 1 8 43 1 8
Input
add -18 max sum remove -18 add -11 add -18 add 2 min add -11 max add 44 add -6 occurrences -18 max add 2 add -11 remove -18 add 6 min max add -20 min sum sum occurrences -6 sum occurrences 45 sum add -20 occurrences -20 occurrences 44 add -38 occurrences -38 max sum min add -6 remove -11 max sum remove 2 min max add -38 sum sum remove -20 sum max max add -11 min max max max min occurrences 6 add -38 sum sum add -18 add 4 occurrences 2 min remove -11 add -6 occurrences 4 min add -6 add -20 occurrences -11 add -20 min min remove -6 add -38 add 2 min add 44 sum min sum add -20 min max add -20 min occurrences 6 remove -38 sum occurrences 16 sum max sum sum max min remove 4 min min add -11 remove -18 add -6 sum min add 6 occurrences -38 add -6 min occurrences 2 add 4 remove -6 remove 44 min min add 44 add -18 remove -20 remove 4 occurrences -38 sum sum add -18 add -18 min sum add 6 add -42 min max max add -38 add 6 add -6 min sum sum min add 44 min add -20 remove -11 add 4 max add 4 add -18 add -42 remove 6 sum max max occurrences -20 max max sum add -38 remove 4 sum sum min min add 44 add 2 min occurrences 16 add -18 min add 4 min sum add 2 add 44 add -42 add -20 sum sum max sum remove -18 remove -38 add -20 min max add -38 sum sum min occurrences -20 add -6 add 4 occurrences -38 add -11 add 4 remove -18 min sum
Output
-18 -18 -18 2 1 44 -11 44 -20 -5 -5 1 -5 0 -5 2 1 1 44 -63 -38 44 -58 -38 44 -98 -98 -78 44 44 -38 44 44 44 -38 1 -127 -127 1 -38 1 -38 2 -38 -38 -38 -168 -38 -168 -38 44 -38 1 -170 0 -170 44 -170 -170 44 -38 -38 -38 -173 -38 3 -38 2 -38 -38 3 -165 -165 -38 -201 -42 44 44 -42 -275 -275 -42 -42 44 -298 44 44 5 44 44 -298 -340 -340 -42 -42 -42 0 -42 -42 -308 -324 -324 44 -324 -42 44 -326 -326 -42 7 5 -42 -317