Submission

Status:

PPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: SayRo

Problemset: สะท้อน

Language: cpp

Time: 0.003 second

Submitted On: 2026-10-11 19:18:00

#include<bits/stdc++.h>
using namespace std;
vector<string> grid;
int dx[4]={1,1,-1,-1};
int dy[4]={1,-1,1,-1};

void solve(int n,int y,int x,int idx){
    if(grid[y][x]=='#') return;
    grid[y][x]='*';
    int ny=y,nx=x;
    while(ny>=0&&ny<n&&nx>=0&&nx<n){
        ny=ny+dy[idx],nx=nx+dx[idx];
        if(!(ny>=0&&ny<n&&nx>=0&&nx<n)) return;
        if(grid[ny][nx]=='.') grid[ny][nx]='*';
        else ny-=dy[idx],nx-=dx[idx];
        if(idx==0){
            if(ny+1<n){
                if(grid[ny+1][nx]=='#') idx=1;
            }
            if(nx+1<n){
                if(grid[ny][nx+1]=='#') idx=2;
            }
        }
        else if(idx==1){
            if(ny-1>=0){
                if(grid[ny-1][nx]=='#') idx=0;
            }
            if(nx+1<n){
                if(grid[ny][nx+1]=='#') idx=3;
            }
        }
        else if(idx==2){
            if(ny+1<n){
                if(grid[ny+1][nx]=='#') idx=3;
            }
            if(nx-1>=0){
                if(grid[ny][nx-1]=='#') idx=0;
            }
        }else{
            if(ny-1>=0){
                if(grid[ny-1][nx]=='#') idx=2;
            }
            if(nx-1>=0){
                if(grid[ny][nx-1]=='#') idx=1;
            }
        }
    }
    return;
}

int main(){
    int n,x,y,idx;
    string s;
    cin>>n>>y>>x>>s;
    grid.resize(n);
    for(int i=0;i<n;i++){
        cin>>grid[i];
    }
    if(s=="SE") idx=0;
    else if(s=="NE") idx=1;
    else if(s=="SW") idx=2;
    else idx=3;
    solve(n,y,x,idx);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<grid[i][j];
        }
        cout<<"\n";
    }
}