제출 #761274

#제출 시각아이디문제언어결과실행 시간메모리
761274Valters07Nautilus (BOI19_nautilus)C++14
66 / 100
1050 ms980 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt") #define fio ios_base::sync_with_stdio(0);cin.tie(0); #define ll long long #define en cin.close();return 0; #define pb push_back #define fi first//printf("%lli\n",cur); #define se second//scanf("%lli",&n); using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int dx[]={1,-1,0,0}; const int dy[]={0,0,1,-1}; int main() { fio // ifstream cin("in.in"); int n, m, len; cin >> n >> m >> len; char gr[n+1][m+1]; vector<vector<bool> > can(n+1,vector<bool>(m+1)), can2 = can, st = can; for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++) cin >> gr[i][j], can[i][j]=(gr[i][j]=='.'); string str; cin >> str; for(auto x:str) { for(int i = 1;i<=n;i++) { for(int j = 1;j<=m;j++) { if(can[i][j]) { if(x=='?') { for(int d = 0;d<4;d++) { int nwx = i+dx[d], nwy = j+dy[d]; if(nwx<1||nwx>n||nwy<1||nwy>m) continue; if(gr[nwx][nwy]=='.') can2[nwx][nwy]=1; } } else { int nwx = i, nwy = j; if(x=='W') nwy--; else if(x=='N') nwx--; else if(x=='S') nwx++; else nwy++; if(nwx<1||nwx>n||nwy<1||nwy>m) continue; if(gr[nwx][nwy]=='.') can2[nwx][nwy]=1; } } } } swap(can,can2); can2=st; } int res = 0; for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++) res+=can[i][j]; cout << res; // cin.close(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...