Submission

Status:
PPPPPPP

Score: 100

User: Monasm

Problemset: สะท้อน

Language: cpp

Time: 0.003 second

Submitted On: 2024-09-28 17:15:51

#include <bits/stdc++.h>

using namespace std;

vector<string> trv = {"NE","SE","SW","NW"};
int gx[] = {-1,1,1,-1};
int gy[] = {1,1,-1,-1};
int dx[] = {1,-1,0,0};
int dy[] = {0,0,1,-1};

int main(){
    int n;cin >> n;
    int x,y;cin >> x >> y;
    string dir;cin >> dir;
    vector<string> adj(n);
    for(auto &i:adj){
        cin >> i;
    }
    while(0<=x&&x<n&&0<=y&&y<n){
        adj[x][y] = '*';
        for(int i=0;i<4;i++){
            if(dir == trv[i]){
                x+=gx[i];y+=gy[i];
                for(int j=0;j<4;j++){
                    int nx = x+dx[j],ny = y+dy[j];
                    if(0<=nx&&nx<n&&0<=ny&&ny<n&&adj[nx][ny] == '#'){
                        if(dir == "SE"){
                            if(dy[j]){dir="SW";}
                            else{dir="NE";}
                        }
                        else if(dir == "NE"){
                            if(dy[j]){dir = "NW";}
                            else{dir = "SE";}
                        }
                        else if(dir == "SW"){
                            if(dy[j]==-1){dir ="SE";}
                            else{dir="NW";}
                        }
                        else{
                            if(dy[j]==-1){dir="NE";}
                            else{dir = "SW";}
                        }
                    }
                }
                break;
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<adj[i][j];
        }
        cout<<endl;
    }
}