Submission #1341836

#TimeUsernameProblemLanguageResultExecution timeMemory
1341836WarinchaiNautilus (BOI19_nautilus)C++20
0 / 100
1 ms344 KiB
#include<bits/stdc++.h>
using namespace std;

const int sz=11;

string s[505];
string dir;
bitset<sz> dp[2][505];
bitset<sz> val[505];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int r,c,m;cin>>r>>c>>m;
    for(int i=0;i<r;i++)cin>>s[i];
    for(int i=1;i<=r;i++)for(int j=1;j<=c;j++)val[i][j]=(s[i-1][j-1]=='.'?1:0);
    cin>>dir;
    int cur=0;
    for(int j=1;j<=r;j++)for(int k=1;k<=c;k++)dp[0][j][k]=val[j][k];
    for(int i=0;i<m;i++){
        cur^=1;
        if(dir[i]=='N')for(int j=1;j<=r;j++)dp[cur][j]=dp[cur^1][j+1];
        else if(dir[i]=='S')for(int j=1;j<=r;j++)dp[cur][j]=dp[cur^1][j-1];
        else if(dir[i]=='E')for(int j=1;j<=r;j++)dp[cur][j]=(dp[cur^1][j]<<1);
        else if(dir[i]=='W')for(int j=1;j<=r;j++)dp[cur][j]=(dp[cur^1][j]>>1);
        else for(int j=1;j<=r;j++)dp[cur][j]=(dp[cur^1][j+1]|dp[cur^1][j-1]|(dp[cur^1][j]>>1)|(dp[cur^1][j]<<1));
        for(int j=1;j<=r;j++)dp[cur][j]&=val[j];
    }
    int cnt=0;
    for(int j=1;j<=r;j++)for(int k=1;k<=c;k++)cnt+=dp[cur][j][k];
    cout<<cnt<<"\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...