Submission #123011

#TimeUsernameProblemLanguageResultExecution timeMemory
123011model_codeNautilus (BOI19_nautilus)Cpython 3
66 / 100
1071 ms3640 KiB
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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...