Submission #1152127

#TimeUsernameProblemLanguageResultExecution timeMemory
1152127dobri_okeNautilus (BOI19_nautilus)C++20
100 / 100
117 ms792 KiB
//#pragma GCC target ("avx2") //#pragma GCC optimize ("Ofast") #include <bits/stdc++.h> using namespace std; #define int long long #define F first #define S second #define pb push_back const int N = 1e6+100, NN=26, mod=1e9+7; int dp[N]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, k; cin >> n >> m >> k; char a[n + 1][m + 1]; bitset < 501 > b[n + 6], b1[n + 6], b2[n + 6]; for(int i = 1 ; i <= n ; ++i) { for(int j = 1 ; j <= m ; ++j) { cin >> a[i][j]; if(a[i][j] == '.') b[i][j] = 1; } b2[i] = b[i]; } string s; cin >> s; for(int o = 0 ; o < k ; ++o) { if(s[o] == 'W') { for(int i = 1 ; i <= n ; ++i){ b1[i] = (b[i]>>1); b1[i] &= b2[i]; b[i] = b1[i]; } } if(s[o] == 'E') { for(int i = 1 ; i <= n ; ++i){ b1[i] = (b[i]<<1); b1[i] &= b2[i]; b[i] = b1[i]; } } if(s[o] == 'S') { for(int i = 1 ; i <= n ; ++i) { b1[i] = b[i - 1]; b1[i] &= b2[i]; } for(int i = 1 ; i <= n ; ++i) { b[i] = b1[i]; } } if(s[o] == 'N') { for(int i = 1 ; i <= n ; ++i) { b1[i] = b[i + 1]; b1[i] &= b2[i]; } for(int i = 1 ; i <= n ; ++i) { b[i] = b1[i]; } } if(s[o] == '?') { for(int i = 1 ; i <= n ; ++i) { b1[i] = ((b[i] >> 1)|(b[i]<<1)|(b[i+1])|(b[i-1])); b1[i] &= b2[i]; } for(int i=1;i<=n;i++) b[i]=b1[i]; } } int ans=0; for(int i = 1 ; i <= n ; ++i) { for(int j = 1 ; j <= m ; ++j) ans+=b[i][j]; } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...