Submission #1150632

#TimeUsernameProblemLanguageResultExecution timeMemory
1150632dostsNautilus (BOI19_nautilus)C++20
100 / 100
142 ms680 KiB
#include <bits/stdc++.h> #pragma GCC target("avx2") #pragma GCC optimize("O3,unroll-loops") using namespace std; #define int long long #define pii pair<int,int> #define ff first #define ss second #define sp << " " << #define all(cont) cont.begin(),cont.end() #define vi vector<int> const int inf = 1e17,N = 2e6+1,MOD = (1LL<<61)-1,B = 23; void solve() { int n,m,q; cin >> n >> m >> q; bitset<360000> board; auto idx = [&](int r,int c) { return (r+1)*(m+2)+(c+1); }; for (int i = 0;i<n;i++) { string s; cin >> s; for (int j = 0;j<m;j++) { board[idx(i,j)] = (s[j] == '.'); } } bitset<360000> b2; bitset<360000> init = board; string ops; cin >> ops; for (auto c : ops) { if (c == 'W') { board >>= 1; } else if (c == 'E') { board <<= 1; } else if (c == 'S') { board <<= (m+2); } else if (c == 'N') { board >>= (m+2); } else { b2.reset(); b2|=(board << 1); b2|=(board >> 1); b2|=(board >> (m+2)); b2|=(board << (m+2)); board = b2; } board&=init; } int ans = 0; for (int i = 0;i<n;i++) { for (int j = 0;j<m;j++) { ans+=board[idx(i,j)]; } } cout << ans << '\n'; } int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifdef Dodi freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t = 1; //cin >> t; while (t --> 0) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...