Submission details
Task:Abandoned warehouse
Sender:aalto26bm_034
Submission time:2026-09-07 17:48:00 +0300
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.04 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.17 sdetails
#7ACCEPTED0.52 sdetails
#8ACCEPTED0.50 sdetails
#9ACCEPTED0.69 sdetails
#10ACCEPTED0.50 sdetails
#11ACCEPTED0.07 sdetails
#12ACCEPTED0.06 sdetails
#13--details
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.42 sdetails

Code

inp = input().split(" ")

r, c = (int(inp[0]), int(inp[1]))

map = [[] for _ in range(r)]
seen = [[(-1, -1) for _ in range(c)] for _ in range(r)]

start = (0, 0)
end = (0, 0)

translate = {".": 1, "#": 2, "A": 3, "B": 4}

for i in range(r):
    line = list(input())
    for j in range(len(line)):
        map[i].append(translate[line[j]])
        if line[j] == "A":
            start = (i, j)
        elif line[j] == "B":
            end = (i, j)

# perform bfs on the map
seen[start[0]][start[1]] = (-2, -2)
q = []

q.append(start)
while len(q) > 0:
    cur = q.pop(0)

    cur_y, cur_x = cur

    if map[cur_y][cur_x] == 4:
        print("YES")

        directions = ""

        # construct string
        run = True
        while cur_x != start[1] or cur_y != start[0]:
            previous = seen[cur_y][cur_x]
            if previous[0] - cur_y == 1:
                directions += "U"
            elif previous[0] - cur_y == -1:
                directions += "D"
            elif previous[1] - cur_x == 1:
                directions += "L"
            elif previous[1] - cur_x == -1:
                directions += "R"

            cur_x = previous[1]
            cur_y = previous[0]

        print(len(directions))
        print(directions[::-1])
        quit()

    # check up
    if (
        cur_y - 1 >= 0
        and seen[cur_y - 1][cur_x][0] == -1
        and (map[cur_y - 1][cur_x] == 1 or map[cur_y - 1][cur_x] == 4)
    ):
        seen[cur_y - 1][cur_x] = (cur_y, cur_x)
        q.append((cur_y - 1, cur_x))
    # check left
    if (
        cur_x - 1 >= 0
        and seen[cur_y][cur_x - 1][0] == -1
        and (map[cur_y][cur_x - 1] == 1 or map[cur_y][cur_x - 1] == 4)
    ):
        seen[cur_y][cur_x - 1] = (cur_y, cur_x)
        q.append((cur_y, cur_x - 1))
    # check down
    if (
        cur_y + 1 < r
        and seen[cur_y + 1][cur_x][0] == -1
        and (map[cur_y + 1][cur_x] == 1 or map[cur_y + 1][cur_x] == 4)
    ):
        seen[cur_y + 1][cur_x] = (cur_y, cur_x)
        q.append((cur_y + 1, cur_x))
    # check right
    if (
        cur_x + 1 < c
        and seen[cur_y][cur_x + 1][0] == -1
        and (map[cur_y][cur_x + 1] == 1 or map[cur_y][cur_x + 1] == 4)
    ):
        seen[cur_y][cur_x + 1] = (cur_y, cur_x)
        q.append((cur_y, cur_x + 1))

print("NO")

Test details

Test 1

Verdict: ACCEPTED

input
10 10
##.A######
#.##.##.##
#####..###
.#########
...

correct output
NO

user output
NO

Test 2

Verdict: ACCEPTED

input
10 10
B#..##.#..
#....A##..
#.....#..#
.#......#.
...

correct output
NO

user output
NO

Test 3

Verdict: ACCEPTED

input
10 10
...#..A.#.
....B...##
...#......
..........
...

correct output
YES
3
LLD

user output
YES
3
LLD

Test 4

Verdict: ACCEPTED

input
10 10
.#........
..........
..........
........#.
...

correct output
YES
1
R

user output
YES
1
R

Test 5

Verdict: ACCEPTED

input
10 10
..........
..........
..........
..........
...

correct output
YES
3
RDD

user output
YES
3
DDR

Test 6

Verdict: ACCEPTED

input
1000 1000
##.###..######.#########.###.#...

correct output
NO

user output
NO

Test 7

Verdict: ACCEPTED

input
1000 1000
####.#.###....#.......##.##.#....

correct output
YES
626
LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL...

user output
YES
626
LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL...

Test 8

Verdict: ACCEPTED

input
1000 1000
....#.##......#....#......#......

correct output
YES
364
LULULLULLLULLLLLUULLLLUUULLLLL...

user output
YES
364
UUUUUULUUUUUUUUUUULLLUUUULLUUU...

Test 9

Verdict: ACCEPTED

input
1000 1000
.................#......#........

correct output
YES
1003
LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL...

user output
YES
1003
LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL...

Test 10

Verdict: ACCEPTED

input
1000 1000
.................................

correct output
YES
947
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL...

user output
YES
947
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU...

Test 11

Verdict: ACCEPTED

input
1000 3
A#B
.#.
.#.
.#.
...

correct output
YES
2000
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

user output
YES
2000
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

Test 12

Verdict: ACCEPTED

input
3 1000
A................................

correct output
YES
2000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
YES
2000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

Test 13

Verdict:

input
999 999
A#...#...#...#...#...#...#...#...

correct output
YES
499998
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

user output
(empty)

Test 14

Verdict: ACCEPTED

input
1 3
A.B

correct output
YES
2
RR

user output
YES
2
RR

Test 15

Verdict: ACCEPTED

input
2 2
##
AB

correct output
YES
1
R

user output
YES
1
R

Test 16

Verdict: ACCEPTED

input
1000 1000
A................................

correct output
YES
1998
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
YES
1998
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...