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";
}
}