| Task: | Abandoned warehouse |
| Sender: | aalto26bm_016 |
| Submission time: | 2026-09-07 17:16:12 +0300 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | WRONG ANSWER | 0.00 s | details |
| #2 | TIME LIMIT EXCEEDED | -- | details |
| #3 | WRONG ANSWER | 0.00 s | details |
| #4 | WRONG ANSWER | 0.00 s | details |
| #5 | WRONG ANSWER | 0.00 s | details |
| #6 | WRONG ANSWER | 0.07 s | details |
| #7 | TIME LIMIT EXCEEDED | -- | details |
| #8 | TIME LIMIT EXCEEDED | -- | details |
| #9 | TIME LIMIT EXCEEDED | -- | details |
| #10 | WRONG ANSWER | 0.06 s | details |
| #11 | WRONG ANSWER | 0.01 s | details |
| #12 | WRONG ANSWER | 0.01 s | details |
| #13 | TIME LIMIT EXCEEDED | -- | details |
| #14 | WRONG ANSWER | 0.00 s | details |
| #15 | WRONG ANSWER | 0.00 s | details |
| #16 | WRONG ANSWER | 0.07 s | details |
Code
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
int height, width;
int startX, startY, endX, endY;
std::vector<std::vector<int>> grid;
int find_shortest_path(std::vector<int> &path, int posX, int posY) {
if (posX < 0 || posX >= width || posY < 0 || posY >= height) return -1;
if (grid[posY][posX] == 1) return -1;
if (grid[posY][posX] == 3) return 0;
std::vector<std::pair<int, int>> dist_dir_pairs(4);
dist_dir_pairs[0] = std::make_pair(std::abs(posX+1 - endX) + std::abs(posY - endY), 0);
dist_dir_pairs[1] = std::make_pair(std::abs(posX-1 - endX) + std::abs(posY - endY), 1);
dist_dir_pairs[2] = std::make_pair(std::abs(posX - endX) + std::abs(posY+1 - endY), 2);
dist_dir_pairs[3] = std::make_pair(std::abs(posX - endX) + std::abs(posY-1 - endY), 3);
std::sort(dist_dir_pairs.begin(), dist_dir_pairs.end());
for (int i = 0; i < 4; ++i) {
int dir = dist_dir_pairs[i].second;
int last_dir = -1;
if (path.size() >= 1) last_dir = path.back();
path.push_back(dir);
int length = -1;
std::cout << "check " << dir << " " << path.size() << std::endl;
switch(dir) {
case 0:
if (last_dir == 1) break;
length = find_shortest_path(path, posX+1, posY);
break;
case 1:
if (last_dir == 0) break;
length = find_shortest_path(path, posX-1, posY);
break;
case 2:
if (last_dir == 3) break;
length = find_shortest_path(path, posX, posY+1);
break;
case 3:
if (last_dir == 2) break;
length = find_shortest_path(path, posX, posY-1);
break;
}
if (length == -1) {
path.pop_back();
} else {
return length+1;
}
}
grid[posY][posX] = 1;
return -1;
}
int main() {
std::cin >> height >> width;
grid = std::vector<std::vector<int>>(height, std::vector<int>(width));
int x = 0;
int y = 0;
for (auto &row : grid) {
for (auto &cell : row) {
char input;
std::cin >> input;
if (input == '.') {
cell = 0;
} else if (input == '#') {
cell = 1;
} else if (input == 'A') {
cell = 2;
startX = x;
startY = y;
} else if (input == 'B') {
cell = 3;
endX = x;
endY = y;
}
x++;
}
x = 0;
y++;
}
std::vector<int> path;
int length = find_shortest_path(path, startX, startY);
if (length == -1) {
std::cout << "NO" << std::endl;
return 0;
}
std::cout << "YES" << std::endl;
std::cout << length << std::endl;
for (uint i = 0; i < path.size(); ++i) {
int dir = path[i];
switch(dir) {
case 0:
std::cout << "R";
break;
case 1:
std::cout << "L";
break;
case 2:
std::cout << "D";
break;
case 3:
std::cout << "U";
break;
}
}
}Test details
Test 1
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 ##.A###### #.##.##.## #####..### .######### ... |
| correct output |
|---|
| NO |
| user output |
|---|
| check 0 1 check 2 1 check 1 1 check 0 2 check 2 2 ... |
Test 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 10 10 B#..##.#.. #....A##.. #.....#..# .#......#. ... |
| correct output |
|---|
| NO |
| user output |
|---|
| (empty) |
Test 3
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 ...#..A.#. ....B...## ...#...... .......... ... |
| correct output |
|---|
| YES 3 LLD |
| user output |
|---|
| check 1 1 check 1 2 check 2 3 YES 3 ... |
Test 4
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 .#........ .......... .......... ........#. ... |
| correct output |
|---|
| YES 1 R |
| user output |
|---|
| check 0 1 YES 1 R |
Test 5
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 .......... .......... .......... .......... ... |
| correct output |
|---|
| YES 3 RDD |
| user output |
|---|
| check 0 1 check 2 2 check 2 3 YES 3 ... |
Test 6
Verdict: WRONG ANSWER
| input |
|---|
| 1000 1000 ##.###..######.#########.###.#... |
| correct output |
|---|
| NO |
| user output |
|---|
| check 0 1 check 3 1 check 1 1 check 2 1 check 0 2 ... |
Test 7
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1000 ####.#.###....#.......##.##.#.... |
| correct output |
|---|
| YES 626 LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL... |
| user output |
|---|
| (empty) |
Test 8
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1000 ....#.##......#....#......#...... |
| correct output |
|---|
| YES 364 LULULLULLLULLLLLUULLLLUUULLLLL... |
| user output |
|---|
| (empty) |
Test 9
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1000 .................#......#........ |
| correct output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... |
| user output |
|---|
| (empty) |
Test 10
Verdict: WRONG ANSWER
| input |
|---|
| 1000 1000 ................................. |
| correct output |
|---|
| YES 947 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL... |
| user output |
|---|
| check 1 1 check 1 2 check 1 3 check 1 4 check 1 5 ... |
Test 11
Verdict: WRONG ANSWER
| input |
|---|
| 1000 3 A#B .#. .#. .#. ... |
| correct output |
|---|
| YES 2000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| check 0 1 check 1 1 check 2 1 check 0 2 check 3 2 ... |
Test 12
Verdict: WRONG ANSWER
| input |
|---|
| 3 1000 A................................ |
| correct output |
|---|
| YES 2000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| check 2 1 check 0 1 check 1 2 check 2 2 check 0 2 ... |
Test 13
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 999 999 A#...#...#...#...#...#...#...#... |
| correct output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| (empty) |
Test 14
Verdict: WRONG ANSWER
| input |
|---|
| 1 3 A.B |
| correct output |
|---|
| YES 2 RR |
| user output |
|---|
| check 0 1 check 0 2 YES 2 RR |
Test 15
Verdict: WRONG ANSWER
| input |
|---|
| 2 2 ## AB |
| correct output |
|---|
| YES 1 R |
| user output |
|---|
| check 0 1 YES 1 R |
Test 16
Verdict: WRONG ANSWER
| input |
|---|
| 1000 1000 A................................ |
| correct output |
|---|
| YES 1998 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| check 0 1 check 0 2 check 0 3 check 0 4 check 0 5 ... |
