답안 #209283

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
209283 2020-03-13T14:50:44 Z Blerargh Nautilus (BOI19_nautilus) C++17
29 / 100
434 ms 262148 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> ii;
typedef pair<ld,ld> id;

#define FOR(i, a, b) for(int i=(a); i<=(b); i++)
#define ROF(i, a, b) for(int i=(a); i>=(b); i--)
#define MEM(x, v) memset(x, v, sizeof(x))
#define FILL(x, n, v) fill(x, x+n, v)
#define SORT(x) sort((x).begin(), (x).end())
#define CMPSORT(x, cp) sort((x).begin(), (x).end(), cp)
#define FAST ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

#define f first
#define s second
#define ins insert
#define e emplace
#define eb emplace_back
#define ef emplace_front
#define p push
#define pf push_front
#define pb push_back
#define mp make_pair
#define ub upper_bound
#define lb lower_bound
#define ft front
#define bk back
#define pp pop
#define ppb pop_back
#define ppf pop_front

#define db cout<<"YEET\n";
#define ct(x) cout<<x<<'\n';

const ll MOD = 1e9+7; //998244353
const ll MX = 5e5+5;
const ll INF = 1e18;
const ld PI = acos((ld)-1);

int main(){
    FAST
    ll r, c, m;
    string dirs;
    cin >> r >> c >> m;

    char grid[505][505];
    FOR(i,1,r){
        FOR(j,1,c){
            cin >> grid[i][j];
        }
    }

    cin >> dirs;

    set<ll> checked[505][505];
    queue<tuple<ll,ll,ll> > bfs; //r, c, id
    ll cnt=0;
    ll y[4] = {-1, 0, 1, 0}, x[4] = {0, 1, 0, -1}; //nesw

    FOR(i,1,r){
        FOR(j,1,c){
            if (grid[i][j]=='#') continue;

            bfs.e(i,j,0);
            while (!bfs.empty()){
                ll row, col, idx;
                tie(row, col, idx) = bfs.ft();
                bfs.pp();

                if (idx == m) {
                    cnt++;
                    continue;
                }

                if (dirs[idx] == 'N'){
                    row--;
                    if (!row || grid[row][col]=='#') continue;
                    if (checked[row][col].count(idx+1)) continue;
                    bfs.e(row,col,idx+1);
                }
                if (dirs[idx] == 'E'){
                    col++;
                    if (col>c || grid[row][col]=='#') continue;
                    if (checked[row][col].count(idx+1)) continue;
                    bfs.e(row,col,idx+1);
                }
                if (dirs[idx] == 'S'){
                    row++;
                    if (row>r || grid[row][col]=='#') continue;
                    if (checked[row][col].count(idx+1)) continue;
                    bfs.e(row,col,idx+1);
                }
                if (dirs[idx] == 'W'){
                    col--;
                    if (!col || grid[row][col]=='#') continue;
                    if (checked[row][col].count(idx+1)) continue;
                    bfs.e(row,col,idx+1);
                }
                if (dirs[idx] == '?'){
                    FOR(k,0,3){
                        ll newrow = row+y[k];
                        ll newcol = col+x[k];
                        if (newrow == 0 || newrow > r || newcol == 0 || newcol > c) continue;
                        if (grid[newrow][newcol]=='#') continue;
                        if (checked[newrow][newcol].count(idx+1)) continue;
                        bfs.e(newrow, newcol, idx+1);
                    }
                }
            }
        }
    }
    cout << cnt;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 12408 KB Output is correct
2 Correct 14 ms 12408 KB Output is correct
3 Correct 13 ms 12408 KB Output is correct
4 Correct 12 ms 12408 KB Output is correct
5 Correct 12 ms 12408 KB Output is correct
6 Correct 12 ms 12408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 12408 KB Output is correct
2 Correct 14 ms 12408 KB Output is correct
3 Correct 13 ms 12408 KB Output is correct
4 Correct 12 ms 12408 KB Output is correct
5 Correct 12 ms 12408 KB Output is correct
6 Correct 12 ms 12408 KB Output is correct
7 Runtime error 434 ms 262148 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 12408 KB Output is correct
2 Correct 14 ms 12408 KB Output is correct
3 Correct 13 ms 12408 KB Output is correct
4 Correct 12 ms 12408 KB Output is correct
5 Correct 12 ms 12408 KB Output is correct
6 Correct 12 ms 12408 KB Output is correct
7 Runtime error 434 ms 262148 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Halted 0 ms 0 KB -