| Task: | Abandoned warehouse |
| Sender: | aalto26bm_014 |
| Submission time: | 2026-09-07 17:07:59 +0300 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.00 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.06 s | details |
| #7 | ACCEPTED | 0.09 s | details |
| #8 | ACCEPTED | 0.08 s | details |
| #9 | ACCEPTED | 0.13 s | details |
| #10 | ACCEPTED | 0.13 s | details |
| #11 | ACCEPTED | 0.01 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.11 s | details |
| #14 | ACCEPTED | 0.00 s | details |
| #15 | ACCEPTED | 0.00 s | details |
| #16 | ACCEPTED | 0.14 s | details |
Compiler report
input/code.cpp: In function 'std::vector<int> locateInMatrix(std::vector<std::vector<char> >&, char)':
input/code.cpp:9:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
9 | for (int i=0;i<mat.size();i++){
| ~^~~~~~~~~~~
input/code.cpp:10:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
10 | for (int j=0;j<mat[i].size();j++){
| ~^~~~~~~~~~~~~~Code
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
vector<int> locateInMatrix(vector<vector<char>> & mat, char c){
for (int i=0;i<mat.size();i++){
for (int j=0;j<mat[i].size();j++){
if (mat[i][j]==c){
return {i, j};
}
}
}
return {-1, -1};
}
int main(){
int n, m;
cin >> n >> m;
vector<vector<char>> mat (n, vector<char>(m));
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
cin >> mat[i][j];
/*
if (mat[i][j]=='\n'){
j--;
}
*/
}
}
/*
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
cout << mat[i][j];
}
cout << '\n';
}
*/
vector<int> a=locateInMatrix(mat, 'A');
vector<int> b=locateInMatrix(mat, 'B');
queue<vector<int>> q;
vector<vector<char>> direction(n, vector<char>(m, 0));
direction[a[0]][a[1]]=1;
bool found = false;
q.push(a);
while (!q.empty()){
auto curr = q.front();
//cout << "Now on " << curr[0] << ' ' << curr[1] << '\n';
q.pop();
int i=curr[0], j=curr[1];
if (mat[i][j]=='B') {
found=true;
break;
}
if (i>0 && mat[i-1][j]!='#' && !direction[i-1][j]){
q.push({i-1, j});
direction[i-1][j]='U';
}
if (j>0 && mat[i][j-1]!='#' && !direction[i][j-1]){
q.push({i, j-1});
direction[i][j-1]='L';
}
if (i<n-1 && mat[i+1][j]!='#' && !direction[i+1][j]){
q.push({i+1, j});
direction[i+1][j]='D';
}
if (j<m-1 && mat[i][j+1]!='#' && !direction[i][j+1]){
q.push({i, j+1});
direction[i][j+1]='R';
}
}
if (!found){
cout << "NO\n";
return 0;
}
/*
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (direction[i][j]) {
cout << direction[i][j];
} else {
cout << "#";
}
}
cout << '\n';
}
*/
vector<char> path(0);
while (b[0]!=a[0] || b[1]!=a[1]) {
path.push_back(direction[b[0]][b[1]]);
//cout << "Now on " << b[0] << ' ' << b[1] << '\n';
if (direction[b[0]][b[1]]=='U'){
b[0]++;
} else if (direction[b[0]][b[1]]=='D'){
b[0]--;
} else if (direction[b[0]][b[1]]=='L'){
b[1]++;
} else if (direction[b[0]][b[1]]=='R'){
b[1]--;
}
}
cout << "YES\n";
reverse(path.begin(), path.end());
cout << path.size() << '\n';
for (char c: path){
cout << c;
}
cout << '\n';
return 0;
}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: ACCEPTED
| input |
|---|
| 999 999 A#...#...#...#...#...#...#...#... |
| correct output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
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... |
