제출 #679618

#제출 시각아이디문제언어결과실행 시간메모리
679618vjudge1Nautilus (BOI19_nautilus)C++17
0 / 100
4 ms3796 KiB
#define taskname "Nautilus"
#include <bits/stdc++.h>

using namespace std;
const int maxn = 510 * 510;
int r, c, m;
bitset<maxn> dp[5010];

inline int cal(int x, int y) {return (x-1) * c + y;}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    cin>>r>>c>>m;
    char cc;
    for (int i=1; i<=r; i++) for (int j=1; j<=c; j++)
    {
        cin>>cc;
        int id = cal(i, j);
        if (cc == '.') dp[0].set(id);
    }
    for (int i=1; i<=m; i++)
    {
        char cc;
        cin>>cc;
        if (cc == 'N') dp[i] = dp[i-1] >> c;
        else if (cc == 'S') dp[i] = dp[i-1] << c;
        else if (cc == 'W') dp[i] = dp[i-1] >> 1;
        else if (cc == 'E') dp[i] = dp[i-1] << 1;
        else
            dp[i] = (dp[i-1] >> c) | (dp[i-1] << c) | (dp[i-1] >> 1) | (dp[i-1] << 1);
        dp[i] &= dp[0];
    }
    cout<<dp[m].count();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...