QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#73551#3033. Harry Potter and the Palindromic RadiuszhangbojuTL 0ms0kbPython3939b2023-01-25 19:35:272023-01-25 19:35:30

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-01-25 19:35:30]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2023-01-25 19:35:27]
  • Submitted

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

result: