#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define lf long double
#define INF 0x7fffffff
#define debug(alpha) cout<<alpha<<endl
#define min(a,b) (a>b?b:a)
#define max(a,b) (a>b?a:b)
#define Max3(a,b,c) (max(max((a),(b)),(c)))
#define Min3(a,b,c) (min(min((a),(b)),(c)))
using namespace std;
namespace io
{
template<typename T> inline void iread(T &x114){
char c=' ';int wx114=1;x114=0;
while(!isdigit(c)){c=getchar();if(c=='-')wx114=-1;}
while(isdigit(c)){x114=x114*10+c-'0';c=getchar();}
x114*=wx114;
}
template<typename T> inline void write(T x114){
if(x114==0){putchar('0');return;}
if(x114<0){putchar('-');x114=-x114;}
int stk[50],top=0;
while(x114){stk[++top]=x114%10;x114/=10;}
while(top) putchar(stk[top--]+'0');
}
}
int n,m,q;
int x,y,lx,ly,l;
char a[515][515];
bool vis[515][515];
string s;
queue<int> qx,qy;
void print()
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;j=-~j)
putchar(a[i][j]);
puts("");
}
}
signed main()
{
cin>>n>>m;
getchar();
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;j=-~j)
{
a[i][j]=getchar();
if(a[i][j]=='*')
{
qx.push(i);
qy.push(j);
a[i][j]='.';
}
}
getchar();
}
io::iread(q);
for(int i=1;i<=q;++i)
{
cin>>s;
if(s=="NORTH") lx=-1,ly=0;
else if(s=="SOUTH") lx=1,ly=0;
else if(s=="WEST") lx=0,ly=-1;
else lx=0,ly=1;
int lll=qx.size();
for(int j=1;j<=lll;++j)
{
l=1;
x=qx.front(),y=qy.front();
qx.pop();
qy.pop();
while(a[x+l*lx][y+l*ly]!='X'&&x+l*lx>0&&x+l*lx<=n&&y+l*ly>0&&y+l*ly<=m&&(!vis[x+l*lx][y+l*y]))
{
qx.push(x+l*lx);
qy.push(y+l*ly);
vis[x+l*lx][y+l*y]=true;
++l;
}
}
memset(vis,0,sizeof vis);
}
cin>>s;
while(!qx.empty())
{
x=qx.front(),y=qy.front();
qx.pop(),qy.pop();
a[x][y]='*';
}
print();
return 0;
}
这个代码本地运行时没有任何问题,但是扔到洛谷上时全WA