Task: | Rotations |
Sender: | suchoale |
Submission time: | 2020-09-26 15:57:26 +0300 |
Language: | Python3 (PyPy3) |
Status: | READY |
Result: | TIME LIMIT EXCEEDED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.93 s | details |
#2 | ACCEPTED | 0.90 s | details |
#3 | ACCEPTED | 0.30 s | details |
#4 | ACCEPTED | 0.30 s | details |
#5 | TIME LIMIT EXCEEDED | -- | details |
#6 | TIME LIMIT EXCEEDED | -- | details |
#7 | TIME LIMIT EXCEEDED | -- | details |
#8 | ACCEPTED | 0.05 s | details |
#9 | ACCEPTED | 0.05 s | details |
#10 | ACCEPTED | 0.05 s | details |
#11 | ACCEPTED | 0.05 s | details |
#12 | TIME LIMIT EXCEEDED | -- | 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))) pos_count = 0 for i in range(N): if sorted_letters[0] == sorted_letters[i]: pos_count += 1 else: break possibilities = index[:pos_count] if len(possibilities) == N: print(word) else: move = 1 while(len(possibilities)) > 1 and move < N: letters = len(possibilities) * [0] i = 0 for start_index in possibilities: letters[i] = word[get_next_index(move, start_index, N)] i+=1 sorted_next_letters, new_possibilities = zip(*sorted(zip(letters, possibilities))) pos_count = 0 for i in range(len(sorted_next_letters)): if sorted_next_letters[0] == sorted_next_letters[i]: pos_count += 1 else: break possibilities = new_possibilities[:pos_count] move += 1 if possibilities[0] is 0: print(word) else: print(word[possibilities[0]:] + word[:possibilities[0]])
Test details
Test 1
Verdict: ACCEPTED
input |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
correct output |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
user output |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... Truncated |
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: TIME LIMIT EXCEEDED
input |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
correct output |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
user output |
---|
(empty) |
Test 6
Verdict: TIME LIMIT EXCEEDED
input |
---|
aaaaaaaaabaaaaaaaaabaaaaaaaaab... |
correct output |
---|
aaaaaaaaabaaaaaaaaabaaaaaaaaab... |
user output |
---|
(empty) |
Test 7
Verdict: TIME LIMIT EXCEEDED
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: TIME LIMIT EXCEEDED
input |
---|
baaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
correct output |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
user output |
---|
(empty) |