La camera dei cestini

Per aiutarti con questo task, abbiamo preparato delle tracce di soluzione, che includono solo le parti di lettura dell'input e scrittura dell'output (da tastiera e su schermo). Puoi decidere se leggere/scrivere su file decommentando le opportune righe di codice.

Descrizione del problema

Tommaso ha NN oggetti e MM cestini in camera. Ogni oggetto è rappresentato da una lettera dell'alfabeto maiuscola, da A\texttt{A} a Z\texttt{Z}. I cestini sono numerati da 00 a M−1M - 1. Ogni cestino ha una capacità illimitata e vi è un ordine fra gli elementi al suo interno: l'elemento in posizione 00 è sul fondo, quello in posizione 11 si trova subito sopra, e così via.

"Alcuni dei cestini di Tommaso"

Inizialmente, tutti gli oggetti si trovano in ordine nel cestino 00, e il loro ordine è dato da una stringa SS di lunghezza NN. Il primo carattere di SS rappresenta l'oggetto in posizione 00, e così via. Tuttavia, quando è annoiato, Tommaso passa il tempo spostando gli oggetti fra i cestini! In particolare, sposta l'oggetto dalla cima di un cestino alla cima di un altro cestino.

Aiuta Tommaso a tenere traccia degli oggetti nella sua camera, stando sempre pronto a dirgli qual è l'oggetto in una certa posizione di un certo cestino, gestendo i suoi QQ spostamenti e domande.

Dati di input

La prima riga del file di input contiene un intero TT, il numero di casi di test. Seguono TT casi di test, numerati da 11 a TT. Ogni caso di test è preceduto da una riga vuota.

Ogni caso di test è composto come segue:

  • la prima riga contiene gli interi NN, MM e QQ;
  • la seconda riga contiene la stringa SS;
  • le QQ righe successive contengono la descrizione di uno spostamento o di un controllo:
    • s aa bb indica uno spostamento: l'oggetto in cima al cestino aa è stato spostato in cima al cestino bb (è garantito che il cestino aa contiene almeno un oggetto al momento dello spostamento);
    • c aa bb indica un controllo: Tommaso vuole sapere qual è il bb-esimo oggetto dal fondo nel cestino aa (è garantito che il cestino aa contiene almeno b+1b + 1 oggetti al momento del controllo).

Dati di output

Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura:

Case #t: ans ...

dove t è il numero del caso di test (a partire da 11) e ans è una stringa che rappresenta le risposte ai controlli di Tommaso. L'ii-esimo carattere della stringa è una lettera maiuscola che rappresenta la risposta all'ii-esimo controllo.

Assunzioni

  • T=10T = 10, nei file di input che scaricherai saranno presenti esattamente 1010 casi di test.
  • 2≤N≤300 0002 \le N \le 300\,000.
  • 2≤M≤500 0002 \le M \le 500\,000.
  • 1≤Q≤300 0001 \le Q \le 300\,000.
  • La stringa SS ha lunghezza NN ed è costituita da lettere maiuscole dell'alfabeto inglese.
  • 0≤a, b<M0 \le a, \, b < M, a≠ba \neq b per ogni spostamento.
  • Per ogni spostamento, c'è almeno un oggetto nel cestino aa.
  • 0≤a<M0 \le a < M, 0≤b<N0 \le b < N per ogni controllo.
  • Per ogni controllo, il cestino aa contiene almeno b+1b + 1 oggetti.

Esempi di input/output


Input:

2

3 3 2
ABC
s 0 1
c 1 0

4 3 6
BCBA
s 0 1
c 1 0
s 0 2
s 1 2
c 2 1
c 0 0

Output:

Case #1: C
Case #2: AAB

Spiegazione

Nel primo caso di esempio, l'oggetto C\texttt{C}, in cima al cestino 00, viene spostato in cima al cestino 11.

"Primo caso d'esempio"

Nel secondo caso di esempio:

  • l'oggetto A\texttt{A} viene spostato dal cestino 00 al cestino 11;

"Secondo caso d'esempio"

  • uno degli oggetti B\texttt{B} viene spostato dal cestino 00 al cestino 22;
  • l'oggetto A\texttt{A} viene spostato dal cestino 11 al cestino 22.

"Secondo caso d'esempio"

Invia soluzione

Accedi per inviare soluzioni
Accedi