Dekodierung einer zyklischen Verschiebung einer Zeichenfolge mit sich wiederholendem Muster
Kotlin
Hard
strings
Aufgabe «Dekodierung einer zyklischen Verschiebung einer Zeichenfolge mit sich wiederholendem Muster»
Gegeben ist eine codierte Zeichenfolge, die aus der ursprünglichen Zeichenfolge durch eine zyklische Verschiebung nach links um eine bestimmte Zahl K (0 ≤ K < Länge der Zeichenfolge) und anschließende Ersetzung jedes Zeichens durch seinen ASCII-Code in dezimaler Schreibweise entstanden ist. Die ursprüngliche Zeichenfolge besteht nur aus lateinischen Kleinbuchstaben (a-z) und hat eine Länge von höchstens 1000. Es ist bekannt, dass die ursprüngliche Zeichenfolge das Ergebnis einer mehrfachen Wiederholung eines bestimmten Musters (Patterns) der Länge P (1 ≤ P ≤ Länge der Zeichenfolge) ist – d.h. die Zeichenfolge hat die Form S = T + T + ... + T (ganzzahlige Anzahl). Die Länge des minimal möglichen Musters P muss gefunden und die ursprüngliche Zeichenfolge vor der zyklischen Verschiebung wiederhergestellt werden. Wenn es mehrere mögliche ursprüngliche Zeichenfolgen gibt, ist diejenige auszuwählen, die lexikografisch minimal ist (im ursprünglichen, nicht verschobenen Zustand). Eingabedaten: eine Zeile, die eine Folge von durch Leerzeichen getrennten ganzen Zahlen enthält – dies ist die codierte Zeichenfolge. Die Länge der Folge ist L (1 ≤ L ≤ 2000). Ausgabedaten: zwei Zahlen – die Länge des minimalen Musters P und der Wert der Verschiebung K, dann in der nächsten Zeile die wiederhergestellte ursprüngliche Zeichenfolge (vor der Verschiebung). Wenn die Wiederherstellung nicht möglich ist, -1 ausgeben.
Eingabeformat
Eine Zeile, die durch Leerzeichen getrennte ganze Zahlen enthält – die Codes der Zeichen der codierten Zeichenfolge.
Ausgabeformat
In der ersten Zeile zwei ganze Zahlen: P und K. In der zweiten Zeile die ursprüngliche Zeichenfolge vor der Verschiebung. Wenn keine Lösung gefunden wurde, -1 ausgeben.
Beispiele
Beispiel 1
EINGABE
99 97 98 99 97 98
AUSGABE
3 1
abcabc
Beispiel 2
EINGABE
97 98 97 98
AUSGABE
2 0
abab
main.kt