Submission #1358185

#TimeUsernameProblemLanguageResultExecution timeMemory
1358185prikpaoNautilus (BOI19_nautilus)C++20
100 / 100
90 ms540 KiB
#include <bits/stdc++.h>
using namespace std;

bitset<505> a[505], now[505], pre[505];

int main(){
    cin.tie(0)->sync_with_stdio(false);
    int n, m, k;
    cin >> n >> m >> k;
    for(int i=1; i<=n; i++){
        for(int j=0; j<m; j++){
            char x;
            cin >> x;
            a[i][j]=(x=='.');
        }
        pre[i]=a[i];
    }
    string op;
    cin >> op;
    for(auto e:op){
        for(int i=1; i<=n; i++){
            if(e=='N')now[i]=pre[i+1];
            if(e=='S')now[i]=pre[i-1];
            if(e=='E')now[i]=pre[i]<<1;
            if(e=='W')now[i]=pre[i]>>1;
            if(e=='?'){
                now[i]=(pre[i+1])|(pre[i-1])|(pre[i]<<1)|(pre[i]>>1);
            }
        }
        for(int i=1; i<=n; i++)pre[i]=now[i]&a[i];
    }
    int ans=0;
    for(int i=1; i<=n; i++)ans+=pre[i].count();
    cout << ans;
    
    return 0;
}
/*
5 9 7
...##....
..#.##..#
..#....##
.##...#..
....#....
WS?EE??

22
*/
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...