Submission #1099165

# Submission time Handle Problem Language Result Execution time Memory
1099165 2024-10-10T16:20:40 Z anhthi Nautilus (BOI19_nautilus) C++14
100 / 100
199 ms 196520 KB
#include <bits/stdc++.h>

using namespace std;

#define fi first
#define se second
#define ll long long
#define mp(x, y) make_pair(x, y)
#define sz(v) ((int) (v).size())
#define all(v) (v).begin(), (v).end()
#define MASK(i) (1LL << (i))
#define BIT(x, y) (((x) >> (y)) & 1)
#define pb push_back
#define heap priority_queue
#define max_rng *max_element
#define min_rng *min_element
#define rep(i, n) for(int i = 1, _n = (n); i <= _n; ++i)
#define forn(i, a, b) for(int i = (a), _b = (b); i <= _b; ++i)
#define ford(i, a, b) for(int i = (a), _b = (b); i >= _b; --i)

template <class X, class Y>
    inline bool maximize(X &x, Y y) {
        return (x < y ? x = y, true : false);
    }

template <class X, class Y>
    inline bool minimize(X &x, Y y) {
        return (x > y ? x = y, true : false);
    }

template <class X>
    inline void compress(vector<X> &a) {
        sort(all(a));
        a.resize(unique(all(a)) - a.begin());
    }

int ctz(ll x) { return __builtin_ctzll(x); }
int lg(ll x) { return 63 - __builtin_clzll(x); }
int popcount(ll x) { return __builtin_popcount(x); }

mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
ll rand(ll l, ll r) {
    return l + abs((ll) rng()) % (r - l + 1);
}

const ll oo = (ll) 1e17;
const int inf = (ll) 1e9 + 7, mod = (ll) 1e9 + 7;

const int N = 555, M = 5555;

void add(int &x, int y) { x += y; if (x >= mod) x -= mod; }
void sub(int &x, int y) { x -= y; if (x < 0) x += mod; }

int n, m, len;

string s;
char a[N][N];

bitset<N> f[M][N], ok[N];

signed main(void) {

    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    cin >> n >> m >> len;
    rep(i, n) rep(j, m) cin >> a[i][j];

    cin >> s;
    s = '!' + s;

    rep(i, n) rep(j, m) f[0][i][j] = ok[i][j] = (a[i][j] == '.');
    rep(t, len) {
        #define ok(c) ((s[t] == '?') || (s[t] == (c)))
        forn(i, 1, n) {
            if (ok('N')) f[t][i] |= f[t-1][i+1]; 
            if (ok('S')) f[t][i] |= f[t-1][i-1];
            if (ok('W')) f[t][i] |= f[t-1][i] >> 1;
            if (ok('E')) f[t][i] |= f[t-1][i] << 1;
            f[t][i] &= ok[i];
        }
    }

    int cnt = 0;
    rep(i, n) cnt += f[len][i].count();

    cout << cnt;     

    return 0;   
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 1624 KB Output is correct
2 Correct 1 ms 1628 KB Output is correct
3 Correct 1 ms 1628 KB Output is correct
4 Correct 1 ms 1628 KB Output is correct
5 Correct 1 ms 1628 KB Output is correct
6 Correct 1 ms 1628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 1624 KB Output is correct
2 Correct 1 ms 1628 KB Output is correct
3 Correct 1 ms 1628 KB Output is correct
4 Correct 1 ms 1628 KB Output is correct
5 Correct 1 ms 1628 KB Output is correct
6 Correct 1 ms 1628 KB Output is correct
7 Correct 1 ms 1784 KB Output is correct
8 Correct 1 ms 1628 KB Output is correct
9 Correct 2 ms 1628 KB Output is correct
10 Correct 1 ms 1624 KB Output is correct
11 Correct 1 ms 1628 KB Output is correct
12 Correct 1 ms 1504 KB Output is correct
13 Correct 1 ms 1628 KB Output is correct
14 Correct 1 ms 1628 KB Output is correct
15 Correct 1 ms 1628 KB Output is correct
16 Correct 1 ms 1628 KB Output is correct
17 Correct 1 ms 1628 KB Output is correct
18 Correct 1 ms 1628 KB Output is correct
19 Correct 2 ms 1628 KB Output is correct
20 Correct 2 ms 1628 KB Output is correct
21 Correct 2 ms 1628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 1624 KB Output is correct
2 Correct 1 ms 1628 KB Output is correct
3 Correct 1 ms 1628 KB Output is correct
4 Correct 1 ms 1628 KB Output is correct
5 Correct 1 ms 1628 KB Output is correct
6 Correct 1 ms 1628 KB Output is correct
7 Correct 1 ms 1784 KB Output is correct
8 Correct 1 ms 1628 KB Output is correct
9 Correct 2 ms 1628 KB Output is correct
10 Correct 1 ms 1624 KB Output is correct
11 Correct 1 ms 1628 KB Output is correct
12 Correct 1 ms 1504 KB Output is correct
13 Correct 1 ms 1628 KB Output is correct
14 Correct 1 ms 1628 KB Output is correct
15 Correct 1 ms 1628 KB Output is correct
16 Correct 1 ms 1628 KB Output is correct
17 Correct 1 ms 1628 KB Output is correct
18 Correct 1 ms 1628 KB Output is correct
19 Correct 2 ms 1628 KB Output is correct
20 Correct 2 ms 1628 KB Output is correct
21 Correct 2 ms 1628 KB Output is correct
22 Correct 134 ms 196432 KB Output is correct
23 Correct 139 ms 196432 KB Output is correct
24 Correct 133 ms 196432 KB Output is correct
25 Correct 144 ms 196512 KB Output is correct
26 Correct 138 ms 196432 KB Output is correct
27 Correct 167 ms 196432 KB Output is correct
28 Correct 169 ms 196436 KB Output is correct
29 Correct 167 ms 196420 KB Output is correct
30 Correct 160 ms 196436 KB Output is correct
31 Correct 185 ms 196312 KB Output is correct
32 Correct 190 ms 196436 KB Output is correct
33 Correct 195 ms 196520 KB Output is correct
34 Correct 199 ms 196432 KB Output is correct
35 Correct 194 ms 196436 KB Output is correct
36 Correct 194 ms 196440 KB Output is correct