제출 #1269080

#제출 시각아이디문제언어결과실행 시간메모리
1269080vukhacminhNautilus (BOI19_nautilus)C++20
66 / 100
69 ms16456 KiB
/**
*    Author :  Vu Khac Minh
**/
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e5 + 5;
const int mod = 1e9+7;
int n,m,k,res;
string s;
bitset<505> dp[505][505];
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m>>k;
    for(int i  =1;i<=n;i++)
    {
        for(int j = 1;j<=m;j++)
        {
            char c;
            cin>>c;
            dp[i][0] <<=1;
         if (c == '.') dp[i][0] |= 1;
        }
    }
    cin>>s;
    s = ' ' + s;
    for(int j = 1;j<=k;j++)
    {
        for(int i = 1;i<=n;i++)
        {
            if(s[j] == 'E'){ //di sang phai
                dp[i][j] = (dp[i][j-1] >> 1) & dp[i][0];
            } else if(s[j] == 'W'){ //di sang trai
                dp[i][j] = (dp[i][j-1] << 1) & dp[i][0];
            } else if(s[j] == 'S'){ //di xuong
                dp[i][j] = dp[i-1][j-1] & dp[i][0];
            } else if(s[j] == 'N'){ // di len
                dp[i][j] = dp[i+1][j-1] & dp[i][0];
            } else if(s[j] == '?'){
                dp[i][j] = ((dp[i][j-1] >> 1) | (dp[i][j-1] << 1) | dp[i-1][j-1] | dp[i+1][j-1]) & dp[i][0];
            }
        }
    }
     for (int i = 1; i <= n; i++) res += dp[i][k].count();
    cout << res;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...