Quick actions

cmd+k|ctrl+k

Navigation

Languages

Kapil Friend's OA question

Snippet info

Language

Cpp

Visibility

public

Author

amangoyal1727

Created

2022-06-07T18:12:36.17842Z

Updated

2022-06-07T18:12:36.17842Z

#include <bits/stdc++.h>
using namespace std;

void helper(vector<vector<char>> grid, int si, int sj,vector<vector<int>> visited,char par, int turns,bool &ans){

    if(si < 0 || sj < 0 || si >= grid.size() || sj >= grid[0].size() || visited[si][sj] || grid[si][sj] == 'x'){
        return;
    }
    
    
    if(grid[si][sj] == 'W'){
        if(turns >=0){
            // cout<<si<<" "<<sj<<" "<<turns<<endl;
            ans = true;
        }
        return;
    }
    
    visited[si][sj] = true;
    if(par == 'L'){
        helper(grid,si+1,sj,visited,'D',turns-1,ans);
        helper(grid,si-1,sj,visited,'U',turns-1,ans);    
        helper(grid,si,sj+1,visited,'R',turns-1,ans);
        helper(grid,si,sj-1,visited,'L',turns,ans);
    }else if(par == 'R'){
        helper(grid,si+1,sj,visited,'D',turns-1,ans);
        helper(grid,si-1,sj,visited,'U',turns-1,ans);    
        helper(grid,si,sj+1,visited,'R',turns,ans);
        helper(grid,si,sj-1,visited,'L',turns-1,ans);
    }else if(par == 'D'){
        helper(grid,si+1,sj,visited,'D',turns,ans);
        helper(grid,si-1,sj,visited,'U',turns-1,ans);    
        helper(grid,si,sj+1,visited,'R',turns-1,ans);
        helper(grid,si,sj-1,visited,'L',turns-1,ans);
    }else if(par == 'U'){
        helper(grid,si+1,sj,visited,'D',turns-1,ans);
        helper(grid,si-1,sj,visited,'U',turns,ans);    
        helper(grid,si,sj+1,visited,'R',turns-1,ans);
        helper(grid,si,sj-1,visited,'L',turns-1,ans);
    }else{
        helper(grid,si+1,sj,visited,'D',turns,ans);
        helper(grid,si-1,sj,visited,'U',turns,ans);    
        helper(grid,si,sj+1,visited,'R',turns,ans);
        helper(grid,si,sj-1,visited,'L',turns,ans);
    }

    return;
    
}

int main() {
    
    int b;cin>>b;
    int p;cin>>p;
    
    vector<vector<char>> grid(b,vector<char>(p));
    
    
    int si = -1;
    int sj = -1;
    
    int ei = -1;
    int ej = -1;
    
    for(int i=0; i<b; i++){
        for(int j=0; j<p; j++){
            cin>>grid[i][j];
            // cout<<grid[i][j]<<" ";
            if(grid[i][j] == 'Q'){
                si = i;
                sj = j;
            }
            if(grid[i][j] == 'W'){
                ei = i;
                ej = j;
            }
        }
        // cout<<endl;
    }
    
    // cout<<si<<sj;
    vector<vector<int>> visited(b,vector<int>(p));

    bool ans = false;
    helper(grid,si,sj,visited,'Q',2,ans);
    
    if(ans){
        cout<<"DRIVE!";
        return 0;
    }
    
    cout<<"DON'T DRIVE!";
    
    return 0;
}
INFO