Submission #480158

#TimeUsernameProblemLanguageResultExecution timeMemory
480158pure_memNautilus (BOI19_nautilus)C++14
100 / 100
205 ms812 KiB
#include <iostream> #include <bitset> #include <cmath> #include <cassert> #define X first #define Y second #define ll long long #define MP make_pair using namespace std; const int N = 501, INF = 1e8; const ll mod = 1e9 + 7; int n, m, q; string Q; bitset<N*N> dp, res, mask; void prints() { for(int i = 1;i <= n;i++) { for(int j = 1;j <= m;j++) { cout << dp[i * N + j]; } cout << "\n"; } cout << "\n"; } int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); cin >> n >> m >> q; for(int i = 1;i <= n;i++) for(int j = 1;j <= m;j++) { char x; cin >> x; dp[i * N + j] = (x != '#'); mask[i * N + j] = (x != '#'); } cin >> Q; for(int i = 0;i < q;i++) { res.reset(); if(Q[i] == 'N' || Q[i] == '?') res |= dp >> N; if(Q[i] == 'S' || Q[i] == '?') res |= dp << N; if(Q[i] == 'W' || Q[i] == '?') res |= dp >> 1; if(Q[i] == 'E' || Q[i] == '?') res |= dp << 1; dp = res & mask; } cout << dp.count(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...