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