Submission

Status:

--P----

Subtask/Task Score:

15/100

Score: 15

User: SayRo

Problemset: สะท้อน

Language: cpp

Time: 0.002 second

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

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

void solve(int n,int y,int x,string s){
    if(grid[y][x]=='#') return;
    grid[y][x]='*';
    while(y>=0&&y<n&&x>=0&&x<n){
        int idx;
        if(s=="NE") idx=1;
        else if(s=="SE") idx=0;
        else if(s=="SW") idx=2;
        else if(s=="NW") idx=3;
        y+=dy[idx],x+=dx[idx];
        if(y<0||x<0||x>=n||y>=n) return;
        if(grid[y][x]=='.') grid[y][x]='*';
        if(idx==0&&x+1<n){
            if(grid[y][x+1]=='#') s="SW";
        }else if(idx==0&&y+1<n){
            if(grid[y+1][x]=='#') s="NE";
        }else if(idx==1&&x+1<n){
            if(grid[y][x+1]=='#') s="NW";
        }else if(idx==1&&y-1>=0){
            if(grid[y-1][x]=='#') s="SW";
        }else if(idx==2&&x-1>=0){
            if(grid[y][x-1]=='#') s="SE";
        }else if(idx==2&&y+1<n){
            if(grid[y+1][x]=='#') s="NW";
        }else if(idx==3&&x-1>=0){
            if(grid[y][x-1]=='#') s="NE";
        }else if(idx==3&&y-1>=0){
            if(grid[y-1][x]=='#') s="SW";
        }
    }
}

int main(){
    int n,x,y;
    string s;
    cin>>n>>y>>x>>s;
    grid.resize(n,vector<char>(n));
    for(int i=0;i<n;i++){
        string ss;
        cin>>ss;
        for(int j=0;j<n;j++) grid[i][j]=ss[j];
    }
    solve(n,y,x,s);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<grid[i][j];
        }
        cout<<"\n";
    }
}