Submission #1305420

#TimeUsernameProblemLanguageResultExecution timeMemory
1305420Davdav1232Nautilus (BOI19_nautilus)C++20
66 / 100
1094 ms1152 KiB
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<vi> vvi; typedef vector<vl> vvl; typedef vector<pii> vii; int main(){ int r, c, m; cin>>r>>c>>m; bool mm[r][c][2]; bool taken[r][c]; for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ taken[i][j]=0; } } for(int i=0; i<r; i++){ string s; cin>>s; for(int j=0; j<c; j++){ if(s[j]=='#'){ taken[i][j]=1; } } } for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ mm[i][j][0]=!taken[i][j]; } } string way; cin>>way; int ind=0; for(int l=0; l<m; l++){ ind=1-ind; if(way[l]=='?'){ for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ if(taken[i][j]){ mm[i][j][ind]=0; continue; } if((i && mm[i-1][j][1-ind]) || (j && mm[i][j-1][1-ind]) || (i<r-1 && mm[i+1][j][1-ind]) || (j<c-1 && mm[i][j+1][1-ind])){ mm[i][j][ind]=1; } else mm[i][j][ind]=0; } } } else if(way[l]=='N'){ for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ if(taken[i][j]){ mm[i][j][ind]=0; continue; } if((i<r-1 && mm[i+1][j][1-ind])){ mm[i][j][ind]=1; } else mm[i][j][ind]=0; } } } else if(way[l]=='S'){ for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ if(taken[i][j]){ mm[i][j][ind]=0; continue; } if((i && mm[i-1][j][1-ind])){ mm[i][j][ind]=1; } else mm[i][j][ind]=0; } } } else if(way[l]=='E'){ for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ if(taken[i][j]){ mm[i][j][ind]=0; continue; } if((j && mm[i][j-1][1-ind])){ mm[i][j][ind]=1; } else mm[i][j][ind]=0; } } } else if(way[l]=='W'){ for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ if(taken[i][j]){ mm[i][j][ind]=0; continue; } if((j<c-1 && mm[i][j+1][1-ind])){ mm[i][j][ind]=1; } else mm[i][j][ind]=0; } } } } int ans=0; for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ if(mm[i][j][ind]){ //cout<<i<<" "<<j<<"\n"; ans++; } } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...