| Task: | Rotations |
| Sender: | suchoale |
| Submission time: | 2020-09-26 15:38:26 +0300 |
| Language: | Python3 (CPython3) |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 1.07 s | details |
| #2 | ACCEPTED | 0.81 s | details |
| #3 | ACCEPTED | 0.16 s | details |
| #4 | ACCEPTED | 0.16 s | details |
| #5 | TIME LIMIT EXCEEDED | -- | details |
| #6 | TIME LIMIT EXCEEDED | -- | details |
| #7 | TIME LIMIT EXCEEDED | -- | details |
| #8 | ACCEPTED | 0.02 s | details |
| #9 | ACCEPTED | 0.02 s | details |
| #10 | ACCEPTED | 0.02 s | details |
| #11 | ACCEPTED | 0.02 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)))
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
if len(possibilities) == N:
print(word)
else:
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
if len(possibilities) >= N - move:
break
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) |
