Submission #1295016

#TimeUsernameProblemLanguageResultExecution timeMemory
1295016azik21Nautilus (BOI19_nautilus)C++20
100 / 100
131 ms588 KiB
#include<iostream>
#include<cassert>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
#include<set>
#include<queue>
#include<map>
#include<iomanip>
#include<bitset>
#define int long long
#define pb push_back
#define all(v) (v).begin() , (v).end()
using namespace std;
const int N = 600;
bitset<(N)>dp[N][2];
bitset<(N)>bl[N];
signed main(){

    ios_base::sync_with_stdio(0) , cin.tie(0);
    int n ,m , sz;
    cin >> n >> m >> sz;
    char c[n+1][m+1];
    for(int i=1 ; i <= n ; i++){
        for(int j = 1 ; j <= m ; j++){
            char x ;
            cin >> x ;
            if(x=='.'){
                dp[i][0][j] = 1  ;
            }
            else bl[i][j] = 1;

        }
    } 
    string s ;
    cin >> s ;
    s = '+'+s;
    int cnt =0 ;
    for(int time = 1 ; time <= sz ; time++){
        if(s[time]=='N' || s[time]=='?'){
            for(int i= 1 ; i < n ; i++){
                dp[i][1]|=dp[i+1][0];
            }
        }
        if(s[time]=='S' || s[time]=='?'){
            for(int i= 2 ; i <= n ; i++){
                dp[i][1]|=dp[i-1][0];
            }        
        }
        if(s[time]=='W' || s[time]=='?'){
            for(int i= 1 ; i <= n ; i++){
                dp[i][1]|=(dp[i][0]>>1);
            }
        }
        if(s[time]=='E' || s[time]=='?'){
            for(int i=1 ; i <= n; i++){
                dp[i][1]|=(dp[i][0]<<1);
            }
        }
        for(int i = 1 ; i <= n ; i++){
            dp[i][1]|=bl[i];
            dp[i][1]^=bl[i];
            dp[i][0] = dp[i][1];
            dp[i][0][m+1] = dp[i][0][0] =0  ;
            dp[i][1]&=0;
        }
    }
    for(int i= 1; i <= n ; i++){
        for(int j =1 ; j <= m ;j++){
            if(dp[i][0][j]==1)cnt++;
        }
    }
    cout<< cnt ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...