| Task: | Abandoned warehouse |
| Sender: | aalto26bm_011 |
| Submission time: | 2026-09-08 17:21:54 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.07 s | details |
| #2 | ACCEPTED | 0.07 s | details |
| #3 | ACCEPTED | 0.07 s | details |
| #4 | ACCEPTED | 0.07 s | details |
| #5 | ACCEPTED | 0.07 s | details |
| #6 | ACCEPTED | 0.13 s | details |
| #7 | ACCEPTED | 0.63 s | details |
| #8 | ACCEPTED | 0.54 s | details |
| #9 | TIME LIMIT EXCEEDED | -- | details |
| #10 | TIME LIMIT EXCEEDED | -- | details |
| #11 | ACCEPTED | 0.13 s | details |
| #12 | ACCEPTED | 0.10 s | details |
| #13 | TIME LIMIT EXCEEDED | -- | details |
| #14 | ACCEPTED | 0.07 s | details |
| #15 | ACCEPTED | 0.07 s | details |
| #16 | TIME LIMIT EXCEEDED | -- | details |
Code
import queue
n, m = [int(i) for i in input().split()]
h = n
w = m
maze = []
start_pos = None
end_pos = None
for y in range(h):
line = input().rstrip("\n")
maze.append(line)
if start_pos and end_pos:
continue
for x, c in enumerate(line):
if c == "A":
start_pos = (x, y)
elif c == "B":
end_pos = (x, y)
search_queue = queue.Queue()
search_queue.put((start_pos[0], start_pos[1]))
visited = [[False] * w for _ in range(h)]
visited[start_pos[1]][start_pos[0]] = True
dist = [[(-1, "", (-1, -1))] * w for _ in range(h)]
dist[start_pos[1]][start_pos[0]] = (0, "", (-1, -1))
moves = [(0, 1, "D"), (0, -1, "U"), (1, 0, "R"), (-1, 0, "L")]
found = False
found_dist = -1
while search_queue.qsize() != 0:
if found:
break
i = search_queue.get()
x, y = i
for dx, dy, direction in moves:
new_x = x + dx
new_y = y + dy
if new_x < 0 or new_x >= w or new_y < 0 or new_y >= h:
continue
if visited[new_y][new_x]:
continue
if maze[new_y][new_x] == "#":
continue
visited[new_y][new_x] = True
old_dist, old_dir, _ = dist[y][x]
dist[new_y][new_x] = (old_dist + 1, direction, (x, y))
search_queue.put((new_x, new_y))
if (new_x, new_y) == end_pos:
found = True
found_dist = old_dist + 1
search_queue = queue.Queue()
break
if found:
print("YES")
print(found_dist)
path = []
x, y = end_pos
while True:
dis, direction, (prev_x, prev_y) = dist[y][x]
path.append(direction)
if dis == 0:
break
x, y = prev_x, prev_y
for i in reversed(path):
print(i, end="")
print()
else:
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 DLL |
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 RDDDDDLDDDDLDDDDLLLLLLDDLLLDDL... |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ....#.##......#....#......#...... |
| correct output |
|---|
| YES 364 LULULLULLLULLLLLUULLLLUUULLLLL... |
| user output |
|---|
| YES 364 UUUUUULUUUUUUUUUUULLLUUUULLUUU... |
Test 9
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1000 .................#......#........ |
| correct output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... |
| user output |
|---|
| (empty) |
Test 10
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1000 ................................. |
| correct output |
|---|
| YES 947 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL... |
| user output |
|---|
| (empty) |
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: TIME LIMIT EXCEEDED
| 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: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1000 A................................ |
| correct output |
|---|
| YES 1998 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| (empty) |
