QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#73551 | #3033. Harry Potter and the Palindromic Radius | zhangboju | TL | 0ms | 0kb | Python3 | 939b | 2023-01-25 19:35:27 | 2023-01-25 19:35:30 |
Judging History
answer
def mana(s):
p = [-1 for _ in range(len(s))]
r = -1
c = -1
n = len(s)
for i in range(n):
if r >= i:
p[i] = min(r-i, p[2*c - i])
else:
p[i] = 0
while i + p[i] + 1 < n and i - p[i] - 1 >= 0:
if s[i + p[i] + 1] == s[i - p[i] - 1]:
p[i] += 1
else:
break
if i + p[i] > r:
r = i + p[i]
c = i
return p
T = int(input())
for i in range(T):
ans = []
n = int(input())
p = list(map(int, input().split()))
for j in range(2):
for k in range(2):
arr = [j, k]
for l in range(2, n):
arr.append(arr[l-2] ^ (p[l-1]==0))
if mana(arr) == p:
ans.append(''.join(map(str, arr)))
print(len(ans))
for j in range(len(ans)):
print(ans[j])
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded
input:
131112 2 0 0 2 0 1 2 0 0 2 1 0 2 0 0 2 0 1 2 0 0 2 0 1 3 0 1 0 3 0 1 1 3 0 0 0 3 0 1 0 3 0 1 0 3 0 2 0 3 0 0 0 3 1 0 0 3 0 0 0 3 1 0 0 3 0 1 0 3 0 2 0 3 0 0 0 3 0 0 1 3 0 1 0 3 0 2 0 4 0 1 1 0 4 0 1 2 0 4 0 0 1 0 4 0 0 1 1 4 0 1 0 0 4 0 1 0 1 4 0 0 0 0 4 0 0 1 0 4 0 0 1 0 4 1 0 1 0 4 0 1 1 0 4 0 1 2...
output:
4 00 01 10 11 0 4 00 01 10 11 0 4 00 01 10 11 0 4 00 01 10 11 0 4 000 010 101 111 0 4 001 011 100 110 4 000 010 101 111 4 000 010 101 111 0 4 001 011 100 110 0 4 001 011 100 110 0 4 000 010 101 111 0 4 001 011 100 110 0 4 000 010 101 111 0 4 0000 0101 1010 1111 0 4 0010 0111 1000 1101 0 4 0001 0100 ...