Submission details
Task:Abandoned warehouse
Sender:aalto26bm_014
Submission time:2026-09-07 17:01:13 +0300
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#10.00 sdetails
#20.00 sdetails
#30.00 sdetails
#40.00 sdetails
#50.00 sdetails
#60.08 sdetails
#70.16 sdetails
#80.14 sdetails
#90.30 sdetails
#100.33 sdetails
#110.01 sdetails
#120.01 sdetails
#130.22 sdetails
#140.00 sdetails
#150.00 sdetails
#160.36 sdetails

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>> prev(n, vector<char>(m, 0));
    prev[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]!='#' && !prev[i-1][j]){
            q.push({i-1, j});
            prev[i-1][j]='U';
        }
        if (j>0 && mat[i][j-1]!='#' && !prev[i][j-1]){
            q.push({i, j-1});
            prev[i][j-1]='L';
        }
        if (i<n-1 && mat[i+1][j]!='#' && !prev[i+1][j]){
            q.push({i+1, j});
            prev[i+1][j]='D';
        }
        if (j<m-1 && mat[i][j+1]!='#' && !prev[i][j+1]){
            q.push({i, j+1});
            prev[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 (prev[i][j]) {

                cout << prev[i][j];
            } else {
                cout << "#";
            }
        }
        cout << '\n';
    }
    */
    vector<char> path(0);
    while (b[0]!=a[0] || b[1]!=a[1]) {
        path.push_back(prev[b[0]][b[1]]);
        //cout << "Now on " << b[0] << ' ' << b[1] << '\n';
        if (prev[b[0]][b[1]]=='U'){
            b[0]++;
        } else if (prev[b[0]][b[1]]=='D'){
            b[0]--;
        } else if (prev[b[0]][b[1]]=='L'){
            b[1]++;
        } else if (prev[b[0]][b[1]]=='R'){
            b[1]--;
        }
    }
    reverse(path.begin(), path.end());
    cout << path.size() << '\n';
    for (char c: path){
        cout << c;
    }
    cout << '\n';

    return 0;
}

Test details

Test 1

Verdict:

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

correct output
NO

user output
##.A######
#.##.##.##
#####..###
.#########
.########.
...

Test 2

Verdict:

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

correct output
NO

user output
B#..##.#..
#....A##..
#.....#..#
.#......#.
..........
...

Test 3

Verdict:

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

correct output
YES
3
LLD

user output
...#..A.#.
....B...##
...#......
..........
...#.#....
...

Test 4

Verdict:

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

correct output
YES
1
R

user output
.#........
..........
..........
........#.
..........
...

Test 5

Verdict:

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

correct output
YES
3
RDD

user output
..........
..........
..........
..........
..........
...

Test 6

Verdict:

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

correct output
NO

user output
##.###..######.#########.###.#...

Test 7

Verdict:

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

correct output
YES
626
LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL...

user output
####.#.###....#.......##.##.#....

Test 8

Verdict:

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

correct output
YES
364
LULULLULLLULLLLLUULLLLUUULLLLL...

user output
....#.##......#....#......#......

Test 9

Verdict:

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

correct output
YES
1003
LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL...

user output
.................#......#........

Test 10

Verdict:

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

correct output
YES
947
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL...

user output
.................................

Test 11

Verdict:

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

correct output
YES
2000
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

user output
A#B
.#.
.#.
.#.
.#.
...

Test 12

Verdict:

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

correct output
YES
2000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
A................................

Test 13

Verdict:

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

correct output
YES
499998
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

user output
A#...#...#...#...#...#...#...#...

Test 14

Verdict:

input
1 3
A.B

correct output
YES
2
RR

user output
A.B
Now on 0 0
Now on 0 1
Now on 0 2
2
...

Test 15

Verdict:

input
2 2
##
AB

correct output
YES
1
R

user output
##
AB
Now on 1 0
Now on 1 1
1
...

Test 16

Verdict:

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

correct output
YES
1998
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
A................................