#include <stdio.h>
#include <string.h>
int r, c, m, dx[] = { -1, 1, 0, 0 }, dy[] = { 0, 0, 1, -1 }, z;
int mask[333][333], mask2[333][333];
char d[333], s[333][333];
const char *ss = "EWNS";
int main() {
scanf("%d%d%d", &r, &c, &m);
for (int i = 0; i < r; ++i)
scanf("%s", s[i]);
scanf("%s", d);
mask[150][150] = 1;
for (int i_ = m - 1; i_ >= 0; --i_) {
memcpy(mask2, mask, sizeof mask);
for (int i = 0; i < 300; ++i) {
for (int j = 0; j < 300; ++j) {
if (! mask2[i][j])
continue;
for (int k = 0; k < 4; ++k) {
if (ss[k] == d[i_] || ss[k] == '?') {
int i_, j_;
i_ = i + dy[k], j_ = j + dx[k];
if (i_ < 300 && j_ < 300)
mask[i_][j_] = 1;
}
}
}
}
}
for (int i = 0; i < r; ++i) {
for (int j = 0; j < c; ++j) {
int i_, j_, ok;
i_ = i, j_ = j, ok = 1;
if (s[i][j] == '#') continue;
for (int i1 = 1110; i1 < r; ++i1) for (int j1 = 0; j1 < c; ++j1) {
int di, dj;
di = i - i1, dj = j - j1;
if (s[i1][j1] == '#' && mask[150 + di][150 + dj]) {
ok = 0;
}
}
for (int i1 = 50; i1 <= 250; ++i1) for (int j1 = 50; j1 <= 250; ++j1) {
if (! mask[i1][j1]) continue;
int di, dj, i_, j_;
di = i1 - 150, dj = j1 - 150;
//printf(" Mask %d %d\n",i1,j1);
i_ = i + di, j_ = j + dj;
//printf(" %d %d %d %d %d %d \n",i,j,di,dj,i_,j_);
if (i_ < 0 || j_ < 0 || i_ >= r || j_ >= c || s[i_][j_] == '#')
ok = 0;
}
if (ok)
++z;
}
}
printf("%d\n", z);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
nautilus.cpp: In function 'int main()':
nautilus.cpp:10:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
10 | scanf("%d%d%d", &r, &c, &m);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:12:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
12 | scanf("%s", s[i]);
| ~~~~~^~~~~~~~~~~~
nautilus.cpp:13:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
13 | scanf("%s", d);
| ~~~~~^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |