제출 #1235618

#제출 시각아이디문제언어결과실행 시간메모리
1235618denislavNautilus (BOI19_nautilus)C++20
66 / 100
2 ms328 KiB
# include <iostream> # include <bitset> using namespace std; const int S=500,MAX=1e3+11; int n,m,q; char ori[MAX]; bitset<S> b[2][S]; bitset<S> ocean[S]; int f(int x) {return x&1;} int main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>m>>q; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { char x; cin>>x; if(x=='.') ocean[i][j]=1; } } for(int i=1;i<=q;i++) cin>>ori[i]; for(int i=0;i<n;i++) b[f(0)][i]=ocean[i]; for(int t=1;t<=q;t++) { for(int i=0;i<n;i++) b[f(t)][i].reset(); if(ori[t]=='N' or ori[t]=='?') { for(int i=0;i<n-1;i++) b[f(t)][i]|=b[f(t-1)][i+1]; } if(ori[t]=='S' or ori[t]=='?') { for(int i=1;i<n;i++) b[f(t)][i]|=b[f(t-1)][i-1]; } if(ori[t]=='E' or ori[t]=='?') { for(int i=0;i<n;i++) b[f(t)][i]|=(b[f(t-1)][i]<<1); } if(ori[t]=='W' or ori[t]=='?') { for(int i=0;i<n;i++) b[f(t)][i]|=(b[f(t-1)][i]>>1); } for(int i=0;i<n;i++) b[f(t)][i]&=ocean[i]; } int ans=0; for(int i=0;i<n;i++) ans+=b[f(q)][i].count(); cout<<ans<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...