Advertisement
Ginger_samurai

Untitled

Sep 10th, 2020
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.61 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include<vector>
  3. #include <string>
  4. #include<algorithm>
  5. #include <iostream>
  6. #include <queue>
  7. #include<set>
  8. #include<unordered_set>
  9. #include<stack>
  10. #include<cmath>
  11. #include<math.h>
  12. #include<map>
  13. #include<unordered_map>
  14. #include<unordered_map>
  15. #include<random>
  16. #include<chrono>
  17. #include <ctime>
  18. using namespace std;
  19. typedef long long ll;
  20. typedef pair<long long, long long> pll;
  21. #define mp make_pair
  22. #define fi(b, c) for(ll i = b; i <= c; i++)
  23. #define fj(b, c) for(ll j = b; j <= c; j++)
  24. #define fk(b, c) for(ll k = b; k <= c; k++)
  25. #define fq(b, c) for(ll q = b; q <= c; q++)
  26. #define fw(b, c) for(ll w = b; w <= c; w++)
  27. #define fim(b, c) for(ll i = b; i >= c; i--)
  28. #define fjm(b, c) for(ll j = b; j >= c; j--)
  29. #define fkm(b, c) for(l k = b; k >= c; k--)
  30. #define all(a) a.begin(), a.end()
  31. #define rall(a) a.rbegin(), a.rend()
  32. // #define sz(a) (ll)(a.size())
  33. #define fs first
  34. #define sd second
  35. #define endl "\n"
  36. #define sz(x) (ll)(x.size())
  37.  
  38. const ll inf = 1e9 + 123, llinf = 1e18 + 829, ura = 684395049517;
  39. void xru() {
  40.     //  setlocale(LC_ALL, "rus");
  41.     //  freopen(".in", "r", stdin);
  42.     //  freopen(".out", "w", stdout);
  43.     ios_base::sync_with_stdio(false);
  44.     cin.tie(NULL);
  45.     cout.tie(NULL);
  46. }
  47. void run() {
  48.     cout << endl;
  49.     system("pause");
  50. }
  51.  
  52. ///////////////////////////////////////////////
  53.  
  54. ll n, m;
  55. vector<vector<char>> g;
  56. vector<char>A, a;
  57. ///////////////////////////////////////////////
  58. bool ok = 1;
  59.  
  60. void dfs(ll x, ll y, ll id){
  61.     // cout << a[id] << " ";
  62.     // cout << x << "-" << y << "-" << g[y][x] << " ";
  63.     if(x < 0 || y < 0 || x == n || y == n){
  64.         ok = 0;
  65.         return;
  66.     }
  67.     if(g[y][x] == '#'){
  68.         ok = 0;
  69.         return;
  70.     }
  71.     if(id == sz(a)) return;
  72.     if(a[id] == 'N'){//up
  73.         dfs(x, y-1, id+1);
  74.     } else if(a[id] == 'S'){//down
  75.         dfs(x, y+1, id+1);
  76.     } else if(a[id] == 'W'){//left
  77.         dfs(x-1, y, id+1);
  78.     } else if (a[id] == 'E'){//right
  79.         dfs(x+1, y, id+1);
  80.     }
  81. }
  82.  
  83. int main() {
  84.     // xru();
  85.     cin >> n >> m;
  86.     g.resize(n, vector<char>(n));
  87.     A.resize(m);
  88.     fi(0, m-1) cin >> A[i];
  89.     ll startX, startY;
  90.     fi(0, n-1){
  91.         fj(0, n-1){
  92.             cin >> g[i][j];
  93.             if(g[i][j] == '@') startX = j, startY = i;
  94.         }
  95.     }
  96.     ll ans = 0;
  97.     fi(0, m-1){
  98.         fj(i, m-1){
  99.             ok = 1;
  100.             fk(i, j) a.push_back(A[k]);
  101.             dfs(startX, startY, 0);
  102.             ans += ok;
  103.             a.clear();
  104.             // if(ok) cout << i << " " << j << endl;
  105.         }
  106.     }
  107.     cout << ans;
  108.     // run();
  109.    
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement