제출 #522219

#제출 시각아이디문제언어결과실행 시간메모리
522219blueNautilus (BOI19_nautilus)C++17
100 / 100
168 ms704 KiB
#include <iostream>
#include <bitset>
#include <algorithm>
using namespace std;

const int mx = 500;
 
int main()
{
	bitset<(mx+2) * (mx+2)> grid, DP0, DP1;
 
	int R, C, M;
	cin >> R >> C >> M;
 
	for(int i = 1; i <= R; i++)
	{
		for(int j = 1; j <= C; j++)
		{
			char c;
			cin >> c;
 
			if(c == '.') 
				grid.set((mx+2) * i + j);
		}
	}
  
	string S;
	cin >> S;
 
	DP0 = grid;
 
	for(char c : S)
	{
		if(c == 'N') DP1 = (DP0 >> (mx+2));
		else if(c == 'S') DP1 = (DP0 << (mx+2));
		else if(c == 'W') DP1 = (DP0 >> 1);
		else if(c == 'E') DP1 = (DP0 << 1);
		else DP1 = (DP0 << (mx+2)) | (DP0 >> (mx+2)) | (DP0 << 1) | (DP0 >> 1);

		DP1 &= grid;
 
		swap(DP0, DP1);
	}
	cout << DP0.count() << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...