Submission #482511

#TimeUsernameProblemLanguageResultExecution timeMemory
482511FidiskNautilus (BOI19_nautilus)C++14
66 / 100
1092 ms1228 KiB
#include <bits/stdc++.h> using namespace std; #define oo 1e9 #define fi first #define se second #define sp(iiii) setprecision(iiii) #define IO ios_base::sync_with_stdio(false); cin.tie(0) #define ms(aaaa,xxxx) memset(aaaa,xxxx,sizeof(aaaa)) #define cntbit(xxxx) __builtin_popcount(xxxx) #define getbit(xxxx,aaaa) (((xxxx)>>(aaaa-1))&1) typedef long double ld; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<pair<int,int>,int> piii; typedef pair<pair<int,int>,pair<int,int>> piiii; typedef pair<long long,long long> pll; typedef pair<pair<long long,long long>,long long> plll; typedef pair<pair<long long,long long>,pair<long long,long long>> pllll; typedef pair<pair<long long,long long>,bool> pllb; typedef pair<long double,long double> pld; typedef pair<pair<long double,long double>,long double> plld; typedef pair<long double,long long> pdl; const ll base=361; const ll mod=1e9; const ll mod2=1e9; const ld eps=1e-3; const ld eps2=1e-7; const ll maxn=1e6+9; const ll maxsize=6e5+29; const ld pi=acos(-1); //const ll delta=1e5+7; const int dx[4]={1,-1,0,0}; const int dy[4]={0,0,1,-1}; const int dxkn[8]={1,1,2,2,-1,-1,-2,-2}; const int dykn[8]={2,-2,1,-1,2,-2,1,-1}; const int dxki[8]={1,1,1,0,0,-1,-1,-1}; const int dyki[8]={1,0,-1,1,-1,1,0,-1}; string s; char ch; int n,m,k,i,j,l,res; bool f[3][509][509],a[509][509]; int main() { IO; cin>>n>>m>>k; for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { cin>>ch; if (ch=='.') { a[i][j]=true; } f[1][i][j]=a[i][j]; } } cin>>s; s=" "+s; for (i=1;i<=k;i++) { for (j=1;j<=n;j++) { for (l=1;l<=m;l++) { f[(i+1)&1][j][l]=false; } } for (j=1;j<=n;j++) { for (l=1;l<=m;l++) { if (s[i]=='?') { f[(i+1)&1][j-1][l]|=f[i&1][j][l]&a[j-1][l]; f[(i+1)&1][j+1][l]|=f[i&1][j][l]&a[j+1][l]; f[(i+1)&1][j][l-1]|=f[i&1][j][l]&a[j][l-1]; f[(i+1)&1][j][l+1]|=f[i&1][j][l]&a[j][l+1]; } else if (s[i]=='S') { f[(i+1)&1][j+1][l]|=f[i&1][j][l]&a[j+1][l]; } else if (s[i]=='N') { f[(i+1)&1][j-1][l]|=f[i&1][j][l]&a[j-1][l]; } else if (s[i]=='E') { f[(i+1)&1][j][l+1]|=f[i&1][j][l]&a[j][l+1]; } else { f[(i+1)&1][j][l-1]|=f[i&1][j][l]&a[j][l-1]; } } } //for (j=1;j<=n;j++) { // for (l=1;l<=m;l++) { // cout<<f[i&1][j][l]; // } // cout<<'\n'; //} } for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { res+=f[(k+1)&1][i][j]; //cout<<f[(k+1)&1][i][j]; } //cout<<'\n'; } cout<<res<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...