Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include<vector>
- #include <string>
- #include<algorithm>
- #include <iostream>
- #include <queue>
- #include<set>
- #include<unordered_set>
- #include<stack>
- #include<cmath>
- #include<math.h>
- #include<map>
- #include<unordered_map>
- #include<unordered_map>
- #include<random>
- #include<chrono>
- #include <ctime>
- using namespace std;
- typedef long long ll;
- typedef pair<long long, long long> pll;
- #define mp make_pair
- #define fi(b, c) for(ll i = b; i <= c; i++)
- #define fj(b, c) for(ll j = b; j <= c; j++)
- #define fk(b, c) for(ll k = b; k <= c; k++)
- #define fq(b, c) for(ll q = b; q <= c; q++)
- #define fw(b, c) for(ll w = b; w <= c; w++)
- #define fim(b, c) for(ll i = b; i >= c; i--)
- #define fjm(b, c) for(ll j = b; j >= c; j--)
- #define fkm(b, c) for(l k = b; k >= c; k--)
- #define all(a) a.begin(), a.end()
- #define rall(a) a.rbegin(), a.rend()
- // #define sz(a) (ll)(a.size())
- #define fs first
- #define sd second
- #define endl "\n"
- #define sz(x) (ll)(x.size())
- const ll inf = 1e9 + 123, llinf = 1e18 + 829, ura = 684395049517;
- void xru() {
- // setlocale(LC_ALL, "rus");
- // freopen(".in", "r", stdin);
- // freopen(".out", "w", stdout);
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- cout.tie(NULL);
- }
- void run() {
- cout << endl;
- system("pause");
- }
- ///////////////////////////////////////////////
- ll n, m;
- vector<vector<char>> g;
- vector<char>A, a;
- ///////////////////////////////////////////////
- bool ok = 1;
- void dfs(ll x, ll y, ll id){
- // cout << a[id] << " ";
- // cout << x << "-" << y << "-" << g[y][x] << " ";
- if(x < 0 || y < 0 || x == n || y == n){
- ok = 0;
- return;
- }
- if(g[y][x] == '#'){
- ok = 0;
- return;
- }
- if(id == sz(a)) return;
- if(a[id] == 'N'){//up
- dfs(x, y-1, id+1);
- } else if(a[id] == 'S'){//down
- dfs(x, y+1, id+1);
- } else if(a[id] == 'W'){//left
- dfs(x-1, y, id+1);
- } else if (a[id] == 'E'){//right
- dfs(x+1, y, id+1);
- }
- }
- int main() {
- // xru();
- cin >> n >> m;
- g.resize(n, vector<char>(n));
- A.resize(m);
- fi(0, m-1) cin >> A[i];
- ll startX, startY;
- fi(0, n-1){
- fj(0, n-1){
- cin >> g[i][j];
- if(g[i][j] == '@') startX = j, startY = i;
- }
- }
- ll ans = 0;
- fi(0, m-1){
- fj(i, m-1){
- ok = 1;
- fk(i, j) a.push_back(A[k]);
- dfs(startX, startY, 0);
- ans += ok;
- a.clear();
- // if(ok) cout << i << " " << j << endl;
- }
- }
- cout << ans;
- // run();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement