Submission #1215717

#TimeUsernameProblemLanguageResultExecution timeMemory
1215717MalixNautilus (BOI19_nautilus)C++20
66 / 100
1095 ms1096 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> ti; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) #define all(x) x.begin(),x.end() ll INF=1000000000000000010; int inf=1e9+10; ll M=1e9+7; bool a[2][500][500],b[500][500]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n,m,k;cin>>n>>m>>k; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); REP(i,0,n)REP(j,0,m){ char c;cin>>c; a[0][i][j]=(c=='.'); b[i][j]=(c=='.'); } string s;cin>>s; vector<pi> loc={{1,0},{-1,0},{0,1},{0,-1}}; REP(i,0,k){ if(s[i]=='?')REP(x,0,n)REP(y,0,m)if(a[0][x][y])for(auto [u,v]:loc)if(x+u>=0&&x+u<n&&y+v>=0&&y+v<m&&b[x+u][y+v])a[1][x+u][y+v]=1; if(s[i]!='?'){ int pos=0; if(s[i]=='N')pos=1; else if(s[i]=='E')pos=2; else if(s[i]=='W')pos=3; auto [u,v]=loc[pos]; REP(x,0,n)REP(y,0,m)if(a[0][x][y])if(x+u>=0&&x+u<n&&y+v>=0&&y+v<m&&b[x+u][y+v])a[1][x+u][y+v]=1; } REP(x,0,n)REP(y,0,m)a[0][x][y]=a[1][x][y]; memset(a[1],0,sizeof(a[1])); } int ans=0; REP(i,0,n)REP(j,0,m)if(a[0][i][j])ans++; cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...