| Task: | Abandoned warehouse |
| Sender: | Dereden |
| Submission time: | 2025-09-08 17:26:54 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.05 s | details |
| #7 | ACCEPTED | 0.20 s | details |
| #8 | ACCEPTED | 0.22 s | details |
| #9 | ACCEPTED | 0.25 s | details |
| #10 | ACCEPTED | 0.26 s | details |
| #11 | ACCEPTED | 0.00 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.12 s | details |
| #14 | ACCEPTED | 0.00 s | details |
| #15 | ACCEPTED | 0.00 s | details |
| #16 | ACCEPTED | 0.25 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:56:9: warning: unused variable 'found' [-Wunused-variable]
56 | bool found = false;
| ^~~~~Code
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <queue>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// freopen("input.txt", "r", stdin); // TODO: REMOVE THIS YOU STUPID ****
int n, m;
cin >> n >> m;
auto a = -1;
auto b = -1;
vector<vector<int>> dirs(n*m);
string map = "";
for (int i = 0; i < n; i++) {
string line;
cin >> line;
map += line;
}
for (int i = 0; i < n*m; i++) {
auto elem = map[i];
if (elem == '#') continue;
if (elem == 'A') a = i;
else if (elem == 'B') b = i;
// top
if (i - m >= 0) {
char te = map[i-m];
if (te != '#') {
dirs[i].push_back(i-m);
dirs[i-m].push_back(i);
}
}
// left, same line
if ((i-1)/m == i/m && i - 1 >= 0) {
char te = map[i-1];
if (te != '#') {
dirs[i].push_back(i-1);
dirs[i-1].push_back(i);
}
}
}
vector<bool> visited(n*m, false);
vector<int> parent(n*m, -1);
queue<int> q;
visited[a] = true;
q.push(a);
bool found = false;
while (!q.empty()) {
int s = q.front(); q.pop();
for (auto &u : dirs[s]) {
if (visited[u]) continue;
visited[u] = true;
parent[u] = s;
if (u == b) break;
q.push(u);
}
}
if (parent[b] == -1) {
cout << "NO";
return 0;
}
string ans = "";
int i = b;
while (i != a) {
int par = parent[i];
// from left
if (par == i - 1) {
ans += "R";
} else if (par == i + 1) {
// from right;
ans += "L";
} else if (par == i - m) {
// from top
ans += "D";
} else ans += "U";
i = par;
}
reverse(ans.begin(), ans.end());
cout << "YES\n" << ans.length() << "\n" << ans;
}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 RDD |
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... Truncated |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ....#.##......#....#......#...... |
| correct output |
|---|
| YES 364 LULULLULLLULLLLLUULLLLUUULLLLL... |
| user output |
|---|
| YES 364 UUUUUULUUUUUUUUUUULLLUUUULLUUU... Truncated |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 .................#......#........ |
| correct output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... |
| user output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... Truncated |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ................................. |
| correct output |
|---|
| YES 947 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL... |
| user output |
|---|
| YES 947 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU... Truncated |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 1000 3 A#B .#. .#. .#. ... |
| correct output |
|---|
| YES 2000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| YES 2000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... Truncated |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 3 1000 A................................ |
| correct output |
|---|
| YES 2000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| YES 2000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... Truncated |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 999 999 A#...#...#...#...#...#...#...#... |
| correct output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... Truncated |
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 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... Truncated |
