Submission #1237589

#TimeUsernameProblemLanguageResultExecution timeMemory
1237589chikien2009Nautilus (BOI19_nautilus)C++20
100 / 100
129 ms544 KiB
#include <bits/stdc++.h>

using namespace std;

void setup()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}

int n, m, k;
char c;
string s;
bitset<500> a[500], b[500], base[500];

int main()
{
    setup();

    cin >> n >> m >> k;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            cin >> c;
            a[i][j] = base[i][j] = (c == '.');
        }
    }
    cin >> s;
    for (auto &i : s)
    {
        for (int j = 0; j < n; ++j)
        {
            b[j].reset();
            if (i == 'E' || i == '?')
            {
                b[j] |= (a[j] << 1);
            }
            if (i == 'W' || i == '?')
            {
                b[j] |= (a[j] >> 1);
            }
            if ((i == 'N' || i == '?') && j + 1 < n)
            {
                b[j] |= a[j + 1];
            }
            if ((i == 'S' || i == '?') && j - 1 >= 0)
            {
                b[j] |= a[j - 1];
            }
        }
        for (int j = 0; j < n; ++j)
        {
            a[j] = b[j] & base[j];
        }
    }
    k = 0;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            k += a[i][j];
        }
    }
    cout << k;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...