Submission #1165896

#TimeUsernameProblemLanguageResultExecution timeMemory
1165896LeonidCukNautilus (BOI19_nautilus)C++20
66 / 100
1096 ms1160 KiB
#include <bits/stdc++.h> using namespace std; vector<pair<int,int>>vrni(char a) { vector<pair<int,int>>res; if(a=='S'||a=='?') { res.push_back({-1,0}); } if(a=='N'||a=='?') { res.push_back({1,0}); } if(a=='W'||a=='?') { res.push_back({0,1}); } if(a=='E'||a=='?') { res.push_back({0,-1}); } return res; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n,m,k; char a; cin>>n>>m>>k; bool dp[2][n][m],v[n][m]; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a; if(a=='#') { dp[1][i][j]=false; v[i][j]=false; } else { dp[1][i][j]=true; v[i][j]=true; } } } for(int i=0;i<k;i++) { cin>>a; vector<pair<int,int>>pos=vrni(a); int k1=i%2,k2=(i+1)%2; for(int i1=0;i1<n;i1++) { for(int j1=0;j1<m;j1++) { dp[k1][i1][j1]=false; if(!v[i1][j1])continue; for(auto p:pos) { int dx=p.first+i1,dy=p.second+j1; if(dx>=0&&dx<n&&dy>=0&&dy<m&&dp[k2][dx][dy])dp[k1][i1][j1]=true; } } } } int bb=0,k1=(k-1)%2; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(dp[k1][i][j])bb++; } } cout<<bb; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...