Submission #1290845

#TimeUsernameProblemLanguageResultExecution timeMemory
1290845Jawad_Akbar_JJNautilus (BOI19_nautilus)C++20
100 / 100
179 ms1356 KiB
#include <iostream>
#include <bitset>

using namespace std;
bitset<505 * 505> cur, Lft, Rgt, Dwn, Up;
string s, ss;

int main(){
	int n, m, k;
	cin>>n>>m>>k;

	for (int i=0;i<n;i++)
		cin>>s, ss += s;

	for (int i=0;i<n * m;i++){
		if (i % m != 0 and ss[i-1] != '#')
			Lft[i] = 1;
		if (i % m != m - 1 and ss[i+1] != '#')
			Rgt[i] = 1;
		if (i / m != 0 and ss[i-m] != '#')
			Up[i]  = 1;
		if (i / m != n - 1 and ss[i+m] != '#')
			Dwn[i] = 1;
		if (ss[i] != '#')
			cur[i] = 1;

	}

	cin>>s;
	for (int i=1;i<=k;i++){
		if (s[i-1] == 'E'){
			cur = (cur & Rgt) << 1;
		}
		else if (s[i-1] == 'W'){
			cur = (cur & Lft) >> 1;
		}
		else if (s[i-1] == 'N'){
			cur = (cur & Up ) >> m;
		}
		else if (s[i-1] == 'S'){
			cur = (cur & Dwn) << m;
		}
		else{
			cur = ((cur & Rgt) << 1) | ((cur & Lft) >> 1) | ((cur & Up) >> m) | ((cur & Dwn) << m);
		}
	}
	cout<<cur.count()<<endl;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...