Module: Präfix-Funktion, Z-Funktion


Problem

10 /10


Chiffre

Theory Click to read/hide

Sowohl Z- als auch Präfixierungsfunktionen können zur Implementierung des ILC-Algorithmus (Knuta-Morrisa-Pratta) verwendet werden, der zur Suche nach einer Subzeile für O(киSки) ausgelegt ist. Das Wesen dieses Algorithmus ist, dass wir an die Linie schreiben, die wir finden möchten, die Linie, wo die Suche im Gange ist. Es ist sehr wünschenswert, dass zwischen diesen Zeilen ein separates Symbol gesetzt wird, d.h. ein Symbol, das in keiner Zeile gefunden wird (in der Regel #).

Problem

Corvin hat es geschafft, n Nachrichten über die Bewegung von Erics Truppen abzufangen. Es stimmt, sie waren verschlüsselt, aber es spielt keine Rolle! Sie werden ihm helfen, diese Nachrichten zu entschlüsseln, oder? Dies sollte nicht schwierig sein, denn Corvin kennt mindestens eine Teilzeichenfolge in jeder ursprünglichen Nachricht.

Es ist bekannt, dass Eric eine Caesar-Chiffre für die Verschlüsselung verwendet, dh eine Chiffre, bei der ein Buchstabe mit der Nummer i durch einen Buchstaben mit der Nummer i + k ersetzt wird, wobei k eine Zahl ist.

Da moderne Compiler das amberische Alphabet nicht unterstützen, ersetzen wir die Zeichen durch ihre Sequenznummer - eine Zahl von 1 bis q, wobei q die Anzahl der Zeichen im Alphabet ist.

Jede Nachricht hat die Länge x, und jede bekannte Teilzeichenfolge ihrer Entschlüsselung ist y.

Ihr Ziel ist es, alle ursprünglichen Nachrichten wiederherzustellen.

DER MIT STD::STRING ÜBERGEBENE WIRD IN DIE HÖFE DES CHAOS GEHEN!!!
 
Eingabe
Die erste Zeile liest die Zahlen n (\(1 <= n <= 100\)) und q (\(1 <= k <= 100\))
Die folgenden 3 * n Zeilen enthalten die Zahlen xi, yi (\(1 <= b_i <= a_i <= 100\)) und 2 Arrays mit Zahlen, die die Nachricht und ihre Teilzeichenfolge ihrer Entschlüsselung darstellen.


Ausgabe
Geben Sie in der Zeile Nummer i eine entschlüsselte Version der Nachricht mit der Nummer i aus.
Am Ende dieser Zeile sollte kein Leerzeichen SEIN


Beispiele
Eingabe Ausgabe
1 1 11
10 4
11 7 1 1 2 6 7 1 1 8
2 7 7 8
6 2 7 7 8 1 2 7 7 3