Submission details
Task:Rotations
Sender:suchoale
Submission time:2020-09-26 15:27:55 +0300
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#11.96 sdetails
#2ACCEPTED0.91 sdetails
#3ACCEPTED0.29 sdetails
#4ACCEPTED0.29 sdetails
#5--details
#6--details
#7--details
#8ACCEPTED0.05 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.05 sdetails
#12--details

Code

import sys

def get_next_index(move, i, n):
    if i + move < n:
        return i + move
    else:
        return move + i - n

if __name__ == '__main__':
    word = sys.stdin.readline().strip()
    N = len(word)
    index = list(range(N))

    sorted_letters, index = zip(*sorted(zip(word, index)))
    start_letter = list(sorted_letters[0])

    possibilities = list()

    for i in range(len(sorted_letters)):
        if start_letter[0] == sorted_letters[i]:
            possibilities.append(index[i])
        else:
            break

    move = 1
    while(len(possibilities)) > 1 and move < N:
        letters = list()
        for start_index in possibilities:
            letters.append(word[get_next_index(move, start_index, N)])

        sorted_next_letters, new_possibilities = zip(*sorted(zip(letters, possibilities)))
        i = 0
        possibilities = list()
        while i < len(sorted_next_letters) and sorted_next_letters[0] == sorted_next_letters[i]:
            possibilities.append(new_possibilities[i])
            i += 1
        move += 1
    print(word[possibilities[0]:] + word[:possibilities[0]])

Test details

Test 1

Verdict:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)

Test 2

Verdict: ACCEPTED

input
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

correct output
abbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

user output
abbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
Truncated

Test 3

Verdict: ACCEPTED

input
jibanqfglkmsywdlqjquxxnqeyhbyu...

correct output
aaadptqmkuqxnvmojzhghqtfztbwsj...

user output
aaadptqmkuqxnvmojzhghqtfztbwsj...
Truncated

Test 4

Verdict: ACCEPTED

input
muykjgvsstkgydmumitbgvsbtgyvmv...

correct output
aaaeaeipiqglrtbzelgrqmrxqbnjke...

user output
aaaeaeipiqglrtbzelgrqmrxqbnjke...
Truncated

Test 5

Verdict:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)

Test 6

Verdict:

input
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

correct output
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

user output
(empty)

Test 7

Verdict:

input
jtcbpjizbiauauipwsdteaisynwesj...

correct output
aisynwesjvtvgghnbqyqprwpfqayzl...

user output
(empty)

Test 8

Verdict: ACCEPTED

input
a

correct output
a

user output
a

Test 9

Verdict: ACCEPTED

input
ab

correct output
ab

user output
ab

Test 10

Verdict: ACCEPTED

input
ba

correct output
ab

user output
ab

Test 11

Verdict: ACCEPTED

input
home

correct output
ehom

user output
ehom

Test 12

Verdict:

input
baaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)