Una oficina està distribuïda com una matriu de petits compartiments, a cadascun dels quals treballa exactament un empleat, del qual es coneix el nom i l’edat. El director general de l’empresa, que té poca feina, vol saber, a partir d’un compartiment donat, quants compartiments es pot moure cap a la dreta de manera que cada compartiment tingui un empleat amb nom més gran (alfabèticament) que el de l’empleat anterior i amb edat més petita que la de l’empleat anterior. També vol calcular el mateix, però anant cap avall enlloc de cap a la dreta. El podeu ajudar?
L’entrada consisteix en diversos casos. Cada cas comença amb
i
,
seguides del nom i l’edat de les persones de cada compartiment, seguint
el format que es pot veure a l’exemple d’entrada. Per exemple, l’empleat
del compartiment
es diu Joan i té 63 anys. Segueix el nombre de preguntes del cas
,
seguit de
triplets
,
on
,
,
i
és un caràcter que és ‘D’ o ‘A’.
Per a cada cas, i per a cada pregunta, escriviu el nombre de
compartiments que es poden visitar començant en
i movent-se segons les regles mencionades anteriorment, cap a la dreta
si
és ‘D’ o cap avall si
és ‘A’. Escriviu una línia amb 10 guions al final de cada
cas.
No es valorarà cap solució que no usi les definicions
struct Empleat {
string nom;
int edat;
};
typedef vector<Empleat> Fila;
typedef vector<Fila> Matriu;
Input
3 4 Joan Jaume Jaume Joan 33 24 40 63 Jordi Jordi Jordi Jordi 33 50 19 18 Anna Jordi Pep Xavi 24 23 20 18 4 2 0 D 0 2 A 1 2 D 0 0 A 1 1 Maria 23 1 0 0 D
Output
4 2 1 1 ---------- 1 ----------