이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
import sys
r,c,m = [int(x) for x in sys.stdin.readline().split()]
grid = [sys.stdin.readline() for i in range(r)]
msg = sys.stdin.readline()
reach,sea,tmp = [0 for i in range(r)],\
[0 for i in range(r)],\
[0 for i in range(r)]
for i in range(r):
for j in range(c):
sea[i] *= 2
sea[i] += grid[i][j] == '.'
reach[i] = sea[i]
ans = 0
for w in msg:
for i in range(r):
if w == 'W':
reach[i] = (reach[i] << 1)&sea[i]
if w == 'E':
reach[i] = (reach[i] >> 1)&sea[i]
if w == 'N':
reach[i] = reach[i+1]&sea[i] if i+1 < r else 0
if w == '?':
tmp[i] = (reach[i] << 1)|(reach[i] >> 1)
if i:
tmp[i] |= reach[i-1]
if i+1 < r:
tmp[i] |= reach[i+1]
tmp[i] &= sea[i]
for i in range(r-1,-1,-1):
if w == 'S':
reach[i] = reach[i-1]&sea[i] if i else 0
for i in range(r):
if w == '?':
reach[i] = tmp[i]
ans = sum([bin(x).count('1') for x in reach])
print(ans)
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |