Submission #1021863

#TimeUsernameProblemLanguageResultExecution timeMemory
1021863basaNautilus (BOI19_nautilus)C++14
29 / 100
1033 ms79448 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
#define int long long
 
string m;
int r, c, k;
string s[505];
map<array<int, 3>, bool>vis;
 
int dfs(int i, int j, int p){
  if(i >= r || i < 0) return 0;
  if(j >= c || j < 0) return 0;
  if(s[i][j] == '#') return 0;
  if(vis[{i, j, p}]) return 0;
  vis[{i, j, p}] = 1;
  if(p == m.size()) return 1;
 
 
  int ret = 0;
 
  if(m[p] == 'N') ret = dfs(i - 1, j, p + 1);
  if(m[p] == 'S') ret = dfs(i + 1, j, p + 1);
  if(m[p] == 'E') ret = dfs(i, j + 1, p + 1);
  if(m[p] == 'W') ret = dfs(i, j - 1, p + 1);
 
  if(m[p] == '?'){
    ret += dfs(i + 1, j, p + 1);
    ret += dfs(i - 1, j, p + 1);
    ret += dfs(i, j + 1, p + 1);
    ret += dfs(i, j - 1, p + 1);
  }
 
  return ret;
}
 
signed main()
{
  cin.tie(0) -> sync_with_stdio(0);
  cin >> r >> c >> k;
 
  for(int i = 0; i < r; i++) cin >> s[i];
 
  cin >> m;
 
  int ans = 0;
  for(int i = 0; i < r; i++){
    for(int j = 0; j < c; j++){
      if(s[i][j] == '#') continue;
      ans += dfs(i, j, 0);
    }
  }
 
  cout << ans;
}

Compilation message (stderr)

nautilus.cpp: In function 'long long int dfs(long long int, long long int, long long int)':
nautilus.cpp:18:8: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |   if(p == m.size()) return 1;
      |      ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...