Submission #1148513

#TimeUsernameProblemLanguageResultExecution timeMemory
1148513arkanefuryNautilus (BOI19_nautilus)C++20
29 / 100
6 ms1352 KiB
#include <bits/stdc++.h>  
#define pb push_back  
using namespace std; 
#define int long long
#define FOR(x, n, m, d) for(int x = n; x <= m; x += d)  
#define FORR(x, n, m, d) for(int x = n; x >= m; x -= d)  
#define nikita ios_base::sync_with_stdio(0), cin.tie(0);  
const int N = 1000+150;  
int n,m,k,tt,ans,l, r, x, y, cnt; 
int b[N],a[N], sum, root[N], block =  620, d[N][N], e[N][N];
string s[N], str;
void solve(){
    nikita
    cin >> n >> m >> k;
    FOR(i, 1, n, 1)cin >> s[i];
    cin >> str;
    FOR(i, 1, n, 1){
        FOR(j, 0, m-1, 1)d[i][j] = 1;
    }
    FOR(ok, 0, k-1, 1){
        FOR(i, 1, n, 1){
            FOR(j, 0, m-1, 1){
                if(s[i][j] == '#')continue;
                if(str[ok] == 'N')e[i-1][j] += d[i][j];
                if(str[ok] == 'S')e[i+1][j] += d[i][j];
                if(str[ok] == 'W')e[i][j-1] += d[i][j];
                if(str[ok] == 'E')e[i][j+1] += d[i][j];
                if(str[ok] == '?'){
                    e[i][j+1] += d[i][j];
                    
                    e[i-1][j] += d[i][j];
                    
                    e[i][j-1] += d[i][j];
                    
                    e[i+1][j] += d[i][j];
                }
            }
        }
        FOR(i, 1, n,1){
            FOR(j, 0, m-1, 1)d[i][j] = e[i][j], e[i][j] = 0;
        }
    }
    ans = 0;
    FOR(i,1,n,1){
        FOR(j, 0, m-1, 1){
            if(s[i][j] != '#')ans += (d[i][j] > 0 ? 1 : 0);
        }
    }
    cout << ans;
}
signed main()  
{  
    nikita  
    tt = 1;  
    if(!tt)cin >> tt;  
    FOR(i, 1, tt, 1){  
    solve();  
    }  
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...