Submission #1153563

#TimeUsernameProblemLanguageResultExecution timeMemory
1153563LudisseyNautilus (BOI19_nautilus)C++20
0 / 100
2 ms320 KiB
#include <bits/stdc++.h> #define int long long #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() using namespace std; const int MAXC=9; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int R,C,M; cin >> R >> C >> M; vector<bitset<MAXC>> grid(R,0); vector<bitset<MAXC>> grid1(R,0); vector<bitset<MAXC>> gridORIG(R,0); for (int i = 0; i < R; i++) { string s; cin >> s; grid[i]=0; for (int j = 0; j < C; j++) { if(s[j]=='.') grid[i].set(j); if(s[j]=='.') grid1[i].set(j); if(s[j]=='.') gridORIG[i].set(j); } } string s; cin >> s; for (int i = 0; i < M; i++) { if(s[i]=='S'){ for (int j = R-1; j > 0; j--) { grid[j]=gridORIG[j]&grid1[j-1]; } grid[0]=0; }else if(s[i]=='N'){ for (int j = 0; j < R-1; j++) { grid[j]=gridORIG[j]&grid1[j+1]; } grid[R-1]=0; }else if(s[i]=='W'){ for (int j = R-1; j >= 0; j--) { grid[j]=gridORIG[j]&(grid1[j]>>1); } }else if(s[i]=='E'){ for (int j = R-1; j >= 0; j--) { grid[j]=gridORIG[j]&(grid1[j]<<1); } }else{ for (int j = R-1; j >= 0; j--) { if(j==0){ grid[j]=(grid1[j+1]|(grid1[j]<<1)|(grid1[j]>>1))&gridORIG[j]; }else if(j==R-1){ grid[j]=(grid1[j-1]|(grid1[j]<<1)|(grid1[j]>>1))&gridORIG[j]; }else{ grid[j]=(grid1[j-1]|grid1[j+1]|(grid1[j]<<1)|(grid1[j]>>1))&gridORIG[j]; } } } swap(grid,grid1); } int ans=0; for (int j = R-1; j >= 0; j--) ans+=grid1[j].count(); cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...