CSES - Leirikisa 9.12.2021 - Results
Submission details
Task:Ruudukko
Sender:Kirill_Akimov
Submission time:2022-01-07 01:35:30 +0200
Language:Python3 (PyPy3)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED42
#3ACCEPTED41
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1details
#2ACCEPTED0.06 s1details
#3ACCEPTED0.06 s1details
#4ACCEPTED0.06 s1details
#5ACCEPTED0.06 s1details
#6ACCEPTED0.07 s2details
#7ACCEPTED0.07 s2details
#8ACCEPTED0.06 s2details
#9ACCEPTED0.06 s2details
#10ACCEPTED0.06 s2details
#11ACCEPTED0.14 s3details
#12ACCEPTED0.12 s3details
#13ACCEPTED0.09 s3details
#14ACCEPTED0.09 s3details
#15ACCEPTED0.09 s3details

Code

from string import ascii_uppercase
char = {ascii_uppercase[i]:i for i in range(26)}

n = int(input())

board = [[e for e in input()] for i in range(n)]

answer = ['*'] * (2*n-1)
answer[0] = board[0][0]
answer[2*n-2] = board[n-1][n-1]
current_queue = [[0,0]]
new_queue = []
minimal = 26

def check(i, j):
    global n
    global answer
    global board
    
    if i == n-1:
        for k in range(i+j+1, 2*n-1):
            answer[k] = board[i][k-i] #answer[k] = r[i][j+k-i-j]
        return True
    elif j == n-1:
        for k in range(i+j+1, 2*n-1):
            answer[k] = board[k-j][j] #answer[k] = r[i+k-i-j][j]
        return True
    return False

def fill_up(i, j, k):
    global n
    global char
    global board
    global minimal
    global current_queue
    global new_queue
    if k == 0 or current_queue[k-1][0] != current_queue[k][0] - 1:
        if j < n-1:
            if char[board[i][j+1]] < minimal:
                new_queue = [[i, j+1]]
                minimal = char[board[i][j+1]]
            elif char[board[i][j+1]] == minimal:
                new_queue += [[i, j+1]]

    if i < n-1:
        if char[board[i+1][j]] < minimal:
            new_queue = [[i+1, j]]
            minimal = char[board[i+1][j]]
        elif char[board[i+1][j]] == minimal:
            new_queue += [[i+1, j]]
            

if n > 1:
    for i in range(1, 2*n-2):
        length = len(current_queue)
    
        if length == 1:
            if check(current_queue[0][0], current_queue[0][1]):
                break

        for j in range(length):
            fill_up(current_queue[j][0], current_queue[j][1], j)
        answer[i] = board[new_queue[0][0]][new_queue[0][1]]
        current_queue = new_queue           
        new_queue = []
        minimal = 26


print(''.join(answer))

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
5
AAAAA
AAAAA
AAAAA
AAAAA
...

correct output
AAAAAAAAB

user output
AAAAAAAAB

Test 2

Group: 1

Verdict: ACCEPTED

input
5
ABABA
BABAB
ABABA
BABAB
...

correct output
ABABABABA

user output
ABABABABA

Test 3

Group: 1

Verdict: ACCEPTED

input
5
WRYIU
TWLKH
UJMJC
GRDJW
...

correct output
WRWJMDJWK

user output
WRWJMDJWK

Test 4

Group: 1

Verdict: ACCEPTED

input
5
RUEAE
ZYHHW
KDBPD
DXREW
...

correct output
RUEAEWDWX

user output
RUEAEWDWX

Test 5

Group: 1

Verdict: ACCEPTED

input
5
SRGYR
MYDOB
GNOVM
SZOZK
...

correct output
SMGNOOLTU

user output
SMGNOOLTU

Test 6

Group: 2

Verdict: ACCEPTED

input
100
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

user output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
Truncated

Test 7

Group: 2

Verdict: ACCEPTED

input
100
ABABABABABABABABABABABABABABAB...

correct output
ABABABABABABABABABABABABABABAB...

user output
ABABABABABABABABABABABABABABAB...
Truncated

Test 8

Group: 2

Verdict: ACCEPTED

input
100
FWOVNYKNMMQCNHJGUYPNEDXGVVGONC...

correct output
FWDBDECKBHKIACOVUCJGDJOHAYIBHO...

user output
FWDBDECKBHKIACOVUCJGDJOHAYIBHO...
Truncated

Test 9

Group: 2

Verdict: ACCEPTED

input
100
ETGCJABWKMAAEOQXWFFYMDJBMNKMQK...

correct output
EAARGLBRLHCDHHBPABHDAJBEEBHQBE...

user output
EAARGLBRLHCDHHBPABHDAJBEEBHQBE...
Truncated

Test 10

Group: 2

Verdict: ACCEPTED

input
100
GNWMLJNHSBAADUFCSGIZMWHZTVDHNR...

correct output
GEGOFRDKBNLLEUOPOEQCEFMTKANLNC...

user output
GEGOFRDKBNLLEUOPOEQCEFMTKANLNC...
Truncated

Test 11

Group: 3

Verdict: ACCEPTED

input
500
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

user output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
Truncated

Test 12

Group: 3

Verdict: ACCEPTED

input
500
ABABABABABABABABABABABABABABAB...

correct output
ABABABABABABABABABABABABABABAB...

user output
ABABABABABABABABABABABABABABAB...
Truncated

Test 13

Group: 3

Verdict: ACCEPTED

input
500
HGADXTSFXYIEMDWMFIVQGHTACFUPYI...

correct output
HGADEJOGAKPJCRAHTABRSDLAVGBFAG...

user output
HGADEJOGAKPJCRAHTABRSDLAVGBFAG...
Truncated

Test 14

Group: 3

Verdict: ACCEPTED

input
500
SBLNMAZESQVGWAPZYHQJMQTNGMEZWS...

correct output
SBLCAMDHILGIDRCIDUNMMAHFYCENOS...

user output
SBLCAMDHILGIDRCIDUNMMAHFYCENOS...
Truncated

Test 15

Group: 3

Verdict: ACCEPTED

input
500
AOXYXRYFWPYWQDPWXQITLHQQUAYZAJ...

correct output
AOJLDOAPBGEKSGCNKBUMKAJCCWCOOD...

user output
AOJLDOAPBGEKSGCNKBUMKAJCCWCOOD...
Truncated