Submission #832820

#TimeUsernameProblemLanguageResultExecution timeMemory
832820serifefedartarNautilus (BOI19_nautilus)C++17
66 / 100
1075 ms24192 KiB
#include <bits/stdc++.h> using namespace std; #define fast ios::sync_with_stdio(0);cin.tie(0); typedef long long ll; #define f first #define s second #define MOD 1000000007 #define LOGN 20 #define MAXN 300005 vector<string> grid; int main() { fast int R, C, M; cin >> R >> C >> M; grid = vector<string>(R); for (int i = 0; i < R; i++) cin >> grid[i]; string way; cin >> way; set<pair<int,int>> curr; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { if (grid[i][j] == '.') curr.insert({i, j}); } } set<pair<int,int>> new_curr; for (int i = 0; i < M; i++) { new_curr = set<pair<int,int>>(); if (way[i] == 'W') { for (auto u : curr) { if (u.s && grid[u.f][u.s-1] == '.') new_curr.insert({u.f, u.s-1}); } } else if (way[i] == 'E') { for (auto u : curr) { if (u.s != C-1 && grid[u.f][u.s+1] == '.') new_curr.insert({u.f, u.s+1}); } } else if (way[i] == 'N') { for (auto u : curr) { if (u.f && grid[u.f-1][u.s] == '.') new_curr.insert({u.f-1, u.s}); } } else if (way[i] == 'S') { for (auto u : curr) { if (u.f != R-1 && grid[u.f+1][u.s] == '.') new_curr.insert({u.f+1, u.s}); } } else { for (auto u : curr) { if (u.s != C-1 && grid[u.f][u.s+1] == '.') new_curr.insert({u.f, u.s+1}); if (u.s && grid[u.f][u.s-1] == '.') new_curr.insert({u.f, u.s-1}); if (u.f != R-1 && grid[u.f+1][u.s] == '.') new_curr.insert({u.f+1, u.s}); if (u.f && grid[u.f-1][u.s] == '.') new_curr.insert({u.f-1, u.s}); } } swap(curr, new_curr); } cout << curr.size() << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...