| 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) |
