제출 #723463

#제출 시각아이디문제언어결과실행 시간메모리
723463lovrotNautilus (BOI19_nautilus)C++17
100 / 100
181 ms616 KiB
#include <cstdio>
#include <cstring>
#include <bitset>

using namespace std; 

const int N = 500; 

bitset<N> M[2][N + 2], S[N + 2];

int main() {
	int n, m, q;
	scanf("%d%d%d", &n, &m, &q); 
	for(int i = 1; i <= n; i++) 
		for(int j = 0; j < m; j++) {
			char c;
			scanf(" %c", &c);
			S[i].set(j, c == '.'); 
			M[0][i].set(j, c == '.'); 
		}
	bool f = 0;
	for(int t = 0; t < q; t++) {
		char c;
		scanf(" %c", &c); 
		f ^= 1;
		for(int i = 1; i <= n; i++) {
			if(c == 'W') M[f][i] = S[i] & (M[!f][i] >> 1);
			else if(c == 'E') M[f][i] = S[i] & (M[!f][i] << 1); 
			else if(c == 'N') M[f][i] = S[i] & M[!f][i + 1]; 
			else if(c == 'S') M[f][i] = S[i] & M[!f][i - 1]; 
			else M[f][i] = S[i] & ((M[!f][i] << 1) | (M[!f][i] >> 1) | M[!f][i - 1] | M[!f][i + 1]);
		}
	}
	int sol = 0; 
	for(int i = 1; i <= n; i++)
		sol += M[f][i].count();
	printf("%d\n", sol); 
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

nautilus.cpp: In function 'int main()':
nautilus.cpp:13:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |  scanf("%d%d%d", &n, &m, &q);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:17:9: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |    scanf(" %c", &c);
      |    ~~~~~^~~~~~~~~~~
nautilus.cpp:24:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |   scanf(" %c", &c);
      |   ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...