Submission #888073

#TimeUsernameProblemLanguageResultExecution timeMemory
888073boyliguanhanNautilus (BOI19_nautilus)C++17
100 / 100
111 ms600 KiB
#include<bits/stdc++.h>
using namespace std;
bitset<512> tmp[502],grd[502],pos[502];
int main() {
    int r, c, m;
    cin >> r >> c >> m;
    for(int i = 1; i <= r; i++) {
        for(int j = 1; j <= c; j++) {
            char c = getchar();
            if(j==1)
                c=getchar();
            grd[i][j]=(c=='.');
        }
        pos[i]=grd[i];
    }
    for(int i = 0; i < m; i++) {
        char c = getchar();
        if(!i) c=getchar();
        for(int j = 1; j <= r; j++)
            tmp[j]=pos[j], pos[j].reset();
        for(int j = 1; j <= r; j++) {
            if(c=='N'||c=='?')
                pos[j]|=tmp[j+1];
            if(c=='S'||c=='?')
                pos[j]|=tmp[j-1];
            if(c=='E'||c=='?')
                pos[j]|=tmp[j]<<1;
            if(c=='W'||c=='?')
                pos[j]|=tmp[j]>>1;
            pos[j]&=grd[j];
        }
    }
    int ans = 0;
    for(int i = 1; i <= r; i++)
        ans+=pos[i].count();
    cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...