Cal implementar la següent classe dicc que ens permet representar i manipular diccionaris, on les claus que identifiquen els elements són del tipus Clau que admet una relació d’ordre total, és a dir, tenim una operació de comparació < entre claus:
Bàsicament el que cal fer és:
Degut a que jutge.org només permet l’enviament d’un fitxer amb la solució del problema, en el mateix fitxer hi ha d’haver l’especificació i l’implementació de la classe (el que normalment estarien separats en els fitxers .hpp i .cpp).
Per testejar la classe disposeu d’un programa principal que processa blocs que contenen un diccionari amb claus enteres i vàries comandes que el manipula.
Entrada
L’entrada conté varis blocs separats per línies amb 10 guions (———–). Cada bloc consisteix en una línia que conté una seqüències d’enters, són els elements que tindrà originalment el diccionari. A continuació segueixen vàries comandes, una per línea, amb el següent format (k, k1 i k2 són claus enteres; i és un natural major que 0):
Sortida
Per a cada línia d’entrada, escriu una línia amb el resultat:
Observació
Només cal enviar les classes requerides; el programa principal serà ignorat. Seguiu estrictament la definició dels tipus de l’enunciat.
Per implementar el diccionari no es poden usar les classes stack, queue, list, set o map de la STL.
Els mètodes insereix, elimina, consulta, min, max i iessim almenys han de tenir cost logarítmic (en el cas mig) per superar els jocs de prova privats. El mètode quants ha de tenir cost constant i els mètodes print i print_interval cost lineal.
Input
5 -3 8 2 -1 7 -7 -6 quants consulta -3 consulta -4 consulta 6 consulta 9 insereix -4 consulta -4 insereix 6 consulta 6 insereix 9 consulta 9 insereix 8 print print_interval -2 6 min max iessim 1 iessim 2 iessim 5 iessim 7 iessim 11 elimina -3 consulta -3 elimina -7 consulta -7 elimina 7 consulta 7 elimina 7 print min max iessim 1 iessim 2 iessim 5 elimina -6 elimina 5 elimina 9 print min max iessim 1 iessim 2 iessim 4
Output
[-7 -6 -3 -1 2 5 7 8] quants: 8 consulta -3: 1 consulta -4: 0 consulta 6: 0 consulta 9: 0 insereix -4: 9 consulta -4: 1 insereix 6: 10 consulta 6: 1 insereix 9: 11 consulta 9: 1 insereix 8: 11 print: [-7 -6 -4 -3 -1 2 5 6 7 8 9] print_interval -2 6: [-1 2 5 6] min: -7 max: 9 iessim 1: -7 iessim 2: -6 iessim 5: -1 iessim 7: 5 iessim 11: 9 elimina -3: 10 consulta -3: 0 elimina -7: 9 consulta -7: 0 elimina 7: 8 consulta 7: 0 elimina 7: 8 print: [-6 -4 -1 2 5 6 8 9] min: -6 max: 9 iessim 1: -6 iessim 2: -4 iessim 5: 5 elimina -6: 7 elimina 5: 6 elimina 9: 5 print: [-4 -1 2 6 8] min: -4 max: 8 iessim 1: -4 iessim 2: -1 iessim 4: 6
Input
5 quants consulta 0 consulta 5 min max iessim 1 elimina 0 elimina 5 print ---------- consulta 0 consulta 1 insereix 1 consulta 1 insereix 1 print print_interval 0 2 print_interval -3 -2 print_interval 2 3 min max iessim 1 elimina 1 consulta 1 elimina 1 print
Output
[5] quants: 1 consulta 0: 0 consulta 5: 1 min: 5 max: 5 iessim 1: 5 elimina 0: 1 elimina 5: 0 print: [] ---------- [] consulta 0: 0 consulta 1: 0 insereix 1: 1 consulta 1: 1 insereix 1: 1 print: [1] print_interval 0 2: [1] print_interval -3 -2: [] print_interval 2 3: [] min: 1 max: 1 iessim 1: 1 elimina 1: 0 consulta 1: 0 elimina 1: 0 print: []