Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define FOR(i, s, e) for(int i=s; i<e; i++)
- #define loop(i, n) for(int i=0; i<n; i++)
- #define getint(n) scanf("%d", &n)
- #define pb(a) push_back(a)
- #define ll long long int
- #define dd double
- #define SZ(a) int(a.size())
- #define read() freopen("input.txt", "r", stdin)
- #define write() freopen("output.txt", "w", stdout)
- #define mem(a, v) memset(a, v, sizeof(a))
- #define all(v) v.begin(), v.end()
- #define pi acos(-1.0)
- #define pf printf
- #define sf scanf
- #define mp make_pair
- #define paii pair<int, int>
- #define padd pair<dd, dd>
- #define pall pair<ll, ll>
- #define fr first
- #define sc second
- #define getlong scanf("%lld",&n)
- #define CASE(n) printf("Case %d: ",++n)
- #define inf 1000000000
- #define EPS 1e-9
- using namespace std;
- int fx[]={0,0,1,-1,1,1,-1,-1};
- int fy[]={1,-1,0,0,1,-1,1,-1};
- char g[105][105];
- int n,m,ans,s;
- string ss;
- int dfs(int u,int v,int x,int y,int ind)
- {
- if(u>=n||u<0||v>=m||v<0||g[u][v]=='#')
- return 0;
- if(g[u][v]=='*'){
- ans++;
- g[u][v]='.';
- }
- for(int i=ind;i<s;i++)
- {
- if(ss[i]=='D')
- {
- if(y==v&&x!=u)
- {
- if(u>x)
- {
- x++;
- y++;
- }
- else
- {
- x--;
- y--;
- }
- }
- else if(x==u&&y!=v)
- {
- if(v>y)
- {
- x--;
- y++;
- }
- else
- {
- x++;
- y--;
- }
- }
- }
- else if(ss[i]=='E')
- {
- if(y==v&&x!=u)
- {
- if(u>x)
- {
- x++;
- y--;
- }
- else
- {
- x--;
- y++;
- }
- }
- else if(x==u&&y!=v)
- {
- if(v>y)
- {
- x++;
- y++;
- }
- else
- {
- x--;
- y--;
- }
- }
- }
- else
- {
- if(u==x&&v!=y)
- {
- if(v>y)
- {
- dfs(x,y,x,y-1,i+1);
- }
- else
- dfs(x,y,x,y+1,i+1);
- }
- else if(v==y&&u!=x)
- {
- if(u>x)
- dfs(x,y,x-1,y,i+1);
- else
- dfs(x,y,x+1,y,i+1);
- }
- }
- }
- }
- int main()
- {
- //read();
- while(cin>>n>>m>>s)
- {
- if(!n &&!m&&!s)
- break;
- int st1,st2,st,en;
- loop(i,n)
- {
- loop(j,m){
- cin>>g[i][j];
- }
- }
- ans=0;
- cin>>ss;
- loop(i,n)
- {
- loop(j,m)
- {
- if(g[i][j]=='N')
- {
- dfs(i,j,i-1,j,0);
- break;
- }
- else if(g[i][j]=='S')
- {
- dfs(i,j,i+1,j,0);
- break;
- }
- else if(g[i][j]=='O')
- {
- dfs(i,j,i,j-1,0);
- break;
- }
- else if(g[i][j]=='L')
- {
- dfs(i,j,i,j+1,0);
- break;
- }
- }
- }
- ss.clear();
- cout<<ans<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement