Submission #1187926

#TimeUsernameProblemLanguageResultExecution timeMemory
1187926babaNautilus (BOI19_nautilus)Pypy 3
0 / 100
159 ms51116 KiB
import numpy as np def main(): import sys input = sys.stdin.read().split() idx = 0 R = int(input[idx]); idx +=1 C = int(input[idx]); idx +=1 M = int(input[idx]); idx +=1 grid = [] for _ in range(R): line = input[idx].strip() grid.append( list(line) ) idx +=1 commands = input[idx].strip() # Create water mask water_mask = np.zeros((R, C), dtype=bool) for i in range(R): for j in range(C): if grid[i][j] == '.': water_mask[i][j] = True prev_dp = water_mask.copy() for cmd in commands: if cmd == 'N': shifted = np.roll(prev_dp, -1, axis=0) shifted[-1, :] = False elif cmd == 'S': shifted = np.roll(prev_dp, 1, axis=0) shifted[0, :] = False elif cmd == 'E': shifted = np.roll(prev_dp, -1, axis=1) shifted[:, -1] = False elif cmd == 'W': shifted = np.roll(prev_dp, 1, axis=1) shifted[:, 0] = False elif cmd == '?': # North shift shifted_n = np.roll(prev_dp, -1, axis=0) shifted_n[-1, :] = False # South shift shifted_s = np.roll(prev_dp, 1, axis=0) shifted_s[0, :] = False # East shift shifted_e = np.roll(prev_dp, -1, axis=1) shifted_e[:, -1] = False # West shift shifted_w = np.roll(prev_dp, 1, axis=1) shifted_w[:, 0] = False shifted = shifted_n | shifted_s | shifted_e | shifted_w else: shifted = np.zeros_like(prev_dp) # Apply water mask current_dp = shifted & water_mask prev_dp = current_dp.copy() print(np.sum(prev_dp)) if __name__ == "__main__": main()

Compilation message (stdout)

Compiling 'nautilus.py'...

=======
  adding: __main__.pyc (deflated 42%)

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