Submission #450417

#TimeUsernameProblemLanguageResultExecution timeMemory
450417OzyNautilus (BOI19_nautilus)C++17
66 / 100
1093 ms6492 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i = (a); i <= (b); i++) #define repa(i,a,b) for(int i = (a); i >= (b); i--) #define lli long long int #define debug(a) cout << #a << " = " << a << endl #define debugsl(a) cout << #a << " = " << a << ", " lli f,c,n,d; lli arr[502][502], dir[8] = {-1,0,1,0,0,1,0,-1}; vector<vector<lli> > pas,nuevo; char x; int main() { ios_base::sync_with_stdio(false); cin >> f >> c >> n; pas.resize(f+2); nuevo.resize(f+2); rep(i,0,f+1) {pas[i].resize(c+2); nuevo[i].resize(c+2);} rep(i,1,f) { rep(j,1,c) { cin >> x; if (x == '.') { arr[i][j] = 1; pas[i][j] = 1; } else arr[i][j] = 0; } } rep(act,1,n) { cin >> x; if (x == 'N') d = 0; else if (x == 'E') d = 1; else if (x == 'S') d = 2; else if (x == 'W') d = 3; else d = -1; rep(i,1,f) { rep(j,1,c) { if (arr[i][j] == 0) continue; if (pas[i][j] != act) continue; rep(k,0,3) { if (d != -1 && d != k) continue; nuevo[i + dir[k]][j + dir[k+4]] = act+1; } } } swap(pas,nuevo); } lli sum = 0; rep(i,1,f) { rep(j,1,c) { if (arr[i][j] == 0) continue; if (pas[i][j] == n+1) sum++; } } cout << sum; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...