Submission #171665

#TimeUsernameProblemLanguageResultExecution timeMemory
171665Tc14Nautilus (BOI19_nautilus)C++17
100 / 100
215 ms764 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pint;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
#define Inf INT32_MAX
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")

int main() {

    ios_base::sync_with_stdio(false);

    int r, c, m, ans;
    char t, d;
    bitset<500> F[500], C[500], T[500];

    cin >> r >> c >> m;

    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            cin >> t;
            if (t == '.') {
                F[i].set(j);
                C[i].set(j);
            }
        }
    }

    for (int i = 0; i < m; i++) {
        cin >> d;
        switch (d) {
        case 'N':
            for (int i = 0; i < r - 1; i++) C[i] = C[i + 1] & F[i];
            C[r - 1].reset();
            break;
        case 'S':
            for (int i = r - 1; i > 0; i--) C[i] = C[i - 1] & F[i];
            C[0].reset();
            break;
        case 'W':
            for (int i = 0; i < r; i++) C[i] = (C[i] >> 1) & F[i];
            break;
        case 'E':
            for (int i = 0; i < r; i++) C[i] = (C[i] << 1) & F[i];
            break;
        default:
            for (int i = 0; i < r; i++) T[i].reset();
            for (int i = 0; i < r - 1; i++) T[i] |= C[i + 1];
            for (int i = r - 1; i > 0; i--) T[i] |= C[i - 1];
            for (int i = 0; i < r; i++) T[i] |= C[i] >> 1;
            for (int i = 0; i < r; i++) T[i] |= C[i] << 1;
            for (int i = 0; i < r; i++) C[i] = T[i] & F[i];
            break;
        }
    }

    ans = 0;
    for (int i = 0; i < r; i++) {
        ans += C[i].count();
    }

    cout << ans << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...