Submission details
Task:Abandoned warehouse
Sender:aalto26bm_030
Submission time:2026-09-07 17:30:09 +0300
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.03 sdetails
#7ACCEPTED0.08 sdetails
#8ACCEPTED0.07 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.07 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.05 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:110:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  110 |         for (int i=0; i<path.size()-1; i++) {
      |                       ~^~~~~~~~~~~~~~

Code

#include <bits/stdc++.h>
#define fast ios::sync_with_stdio(0); cin.tie(0);
#define fill(arr,val) memset(arr,val,sizeof(arr))
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define ll long long
#define fi first
#define se second
#define pb push_back
#define pf push_front
#define ii pair<int,int>
#define dq deque<int>
#define nend '\n'
using namespace std;

const ll inf=1e18;
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};
const int N=1005;
int a[N][N],dist[N][N],posx,posy,n,m;
char x;
bool vs[N][N];
ii endd;
ii par[N][N];
ii start;
queue<ii>q;
vector<ii>ans;
ii dsu(ii startt) {
    if (startt!=par[startt.fi][startt.se]) {
        ans.pb(par[startt.fi][startt.se]);
        return dsu(par[startt.fi][startt.se]);
    }else {
        return startt;
    }
}
void bfs(ii start) {
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=m; j++) {
            dist[i][j]=1e9;
        }
    }
    dist[start.fi][start.se]=0;
    q.push(start);
    while (!q.empty()) {
        int x=q.front().fi, y=q.front().se;
        q.pop();
        for (int i=0; i<4; i++) {
            int u=x+dx[i];
            int v=y+dy[i];
            if (dist[u][v]>dist[x][y]+1 && u<=n && u>0 && v<=m && v>0 && a[u][v]!=0) {
                dist[u][v]=dist[x][y]+1;
                // if (u==endd.fi and v==endd.se) {
                //     posx=u;
                //     posy=v;
                //     par[u][v]=ii(x,y); /// x y la cha u v
                // }
                par[u][v]=ii(x,y);
                q.push(ii(u,v));
            }
        }
    }
}
vector<ii>path;
int main() {
//    freopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
    fast;
    cin >> n >> m;
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=m; j++) {
            cin >> x;
            if (x=='.' || x=='A' || x=='B')
                a[i][j]=1;
            else a[i][j]=0;
            if (x=='A') {
                start=ii(i,j);
            }
            if (x=='B') {
                endd=ii(i,j);
            }
            // vs[i][j]=false;
            par[i][j]=ii(i,j);
        }
    }
    // cout << endd.fi << ' ' << endd.se << " end" << nend;
    // for (int i=1; i<=n; i++) {
    //     for (int j=1; j<=m; j++) {
    //         cout << a[i][j] << ' ';
    //     }
    //     cout << nend;
    // }
    bfs(start);
    // cout << endd.fi << ' ' << endd.se << nend;
    // cout << dist[endd.fi][endd.se];
    if (dist[endd.fi][endd.se]!=1e9) {
        YES;
        cout << dist[endd.fi][endd.se] << nend;
//        cout << dist[posx][posy] << nend;
        ii rev;
        int u=endd.fi, v=endd.se;
//        cout << u << ' ' << v << nend;
        rev={u,v};
        path.pb(rev);
        while (rev!=start) {
            rev={par[rev.fi][rev.se].fi,par[rev.fi][rev.se].se};
            path.pb(rev);
//            cout << rev.fi << ' ' << rev.se << nend;
        }
        reverse(path.begin(),path.end());
        for (int i=0; i<path.size()-1; i++) {
            ///L
            if (path[i+1].fi == path[i].fi-1) {
                cout << 'U';
            }else if (path[i+1].fi==path[i].fi+1) {
                cout << 'D';
            }else if (path[i+1].se==path[i].se+1) {
                cout << 'R';
            }else  if (path[i+1].se==path[i].se-1) {
                cout << 'L';
            }
        }
    }else NO;
    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
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: ACCEPTED

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

correct output
YES
1003
LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL...

user output
YES
1003
DDDDDDDDDDDDDDDDDLDDDDDDDDDDDD...

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...