제출 #226917

#제출 시각아이디문제언어결과실행 시간메모리
226917PajarajaNautilus (BOI19_nautilus)C++17
100 / 100
249 ms1144 KiB
#include <bits/stdc++.h>
#define MAXN 507
using namespace std;
bitset<MAXN*MAXN> bs,tr;
int n,m,p;
int main()
{
	cin>>n>>m>>p;
	string s;
	for(int i=0;i<m+2;i++) bs[i]=0;
	for(int i=0;i<m+2;i++) bs[(n+1)*(m+2)+i]=0;
	for(int i=1;i<=n;i++)
	{
		cin>>s;
		bs[i*(m+2)]=bs[i*(m+2)+m+1]=0;
		for(int j=1;j<=m;j++) {if(s[j-1]=='#') bs[i*(m+2)+j]=0; else bs[i*(m+2)+j]=1;}
	}
	cin>>s;
	tr=bs;
	for(int ttt=0;ttt<p;ttt++)
	{
		if(s[ttt]=='S') tr=bs&(tr<<(m+2));
		if(s[ttt]=='N') tr=bs&(tr>>(m+2));
		if(s[ttt]=='E') tr=bs&(tr<<1);
		if(s[ttt]=='W') tr=bs&(tr>>1);
		if(s[ttt]=='?') tr=bs&((tr>>1)|(tr<<1)|tr>>(m+2)|tr<<(m+2));
	}
	int res=0;
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(tr[i*(m+2)+j]) res++;
	cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...