Considereu una seqüència de dates ordenada de forma estrictament creixent. (Per exemple, la seqüència podria ser 5/5/2003, 6/5/2003, 1/8/2003.) Volem poder fer les operacions següents:
Feu un programa que, a partir d’una seqüència de dates inicialment buida, vagi realitzant les operacions demanades. Compte: les tres operacions (afegir, esborrar, i consultar) han de ser eficients. En particular, el codi de les dues primeres hauria de ser minúscul. Per a la tercera, useu dues vegades un algorisme fonamental. La seqüència pot crèixer fins arribar a tenir un màxim de 10000 elements.
Pista
Us suggerim que utilitzeu la definició
així com una funció
que llegeixi i retorni una data de l’entrada.
Entrada
L’entrada consisteix en una sèrie d’ordres: Si es vol afegir, ve una A seguida d’una data estrictament més gran que totes les dates presents a la seqüència. Si es vol esborrar, ve una E. Teniu la garantia que mai no s’intentarà esborrar d’una seqüència buida. Si es vol consultar, ve una C seguida de dues dates a i b presents a la seqüència, i tals que a ≤ b. Tots els dies es troben entre 1 i 31, els mesos entre 1 i 12, i els anys entre 1 i 5000.
Sortida
Per a cada consulta de l’entrada, escriviu una línia amb la distància entre les dues dates.
Input
A 5/5/2003 A 6/5/2003 A 1/8/2003 C 5/5/2003 1/8/2003 A 12/12/2003 A 31/12/2003 A 1/1/2004 A 10/10/2004 A 15/11/2009 A 24/12/2009 A 12/1/2010 C 12/12/2003 15/11/2009 C 24/12/2009 12/1/2010 C 5/5/2003 12/1/2010
Output
2 4 1 9
Input
Output
Input
A 6/6/6 C 6/6/6 6/6/6 A 7/7/7 C 6/6/6 7/7/7 A 8/8/8 C 6/6/6 8/8/8 E E A 8/8/8 C 6/6/6 8/8/8 E E A 5/5/5 C 5/5/5 5/5/5
Output
0 1 2 1 0