제출 #1324983

#제출 시각아이디문제언어결과실행 시간메모리
1324983lizaNautilus (BOI19_nautilus)C++20
29 / 100
1091 ms988 KiB
#include <bits/stdc++.h>

using namespace std;

int const N=505;
int g[N][N];
int r, c, m;
string s;
set<pair<int,int>> rez;
void f(int x, int y, int si=0)
{
    if(!g[x][y])return;
    if(si==m)
    {
        rez.insert({x, y});
        return;
    }
    if(s[si]=='W' || s[si]=='?')
    {
        if(y>0)
        {
            f(x, y-1, si+1);
        }
    }
    if(s[si]=='N' || s[si]=='?')
    {
        if(x>0)
        {
            f(x-1, y, si+1);
        }
    }
    if(s[si]=='S' || s[si]=='?')
    {
        if(x<r-1)
        {
            f(x+1, y, si+1);
        }
    }
    if(s[si]=='E' || s[si]=='?')
    {
        if(y<c-1)
        {
            f(x, y+1, si+1);
        }
    }

}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> r >> c >> m;
    for(int i =0; i < r; i++)
    {
        for(int j = 0; j < c; j++)
        {
            char a; cin >> a;
            if(a=='.') g[i][j]=1;
        }
    }
    cin >> s;
    for(int i = 0; i <r; i++)
    {
        for(int j= 0; j < c; j++)
        {
            f(i, j);
        }
    }
    cout << rez.size() << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...