Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def min_mine_robots(n, nums):
- def compute_right_mat():
- nonlocal mat, right_mat
- for r in range(n):
- rs = 0
- for c in range(n-1, -1, -1):
- if mat[r][c]:
- rs += 1
- right_mat[r][c] = rs
- def compute_up_mat():
- nonlocal mat, up_mat
- for c in range(n):
- rs = 0
- for r in range(n):
- if mat[r][c]:
- rs += 1
- up_mat[r][c] = rs
- mat = [[False for c in range(n)] for r in range(n)]
- for num in nums:
- r = n - 1 - num // n
- c = num % n
- mat[r][c] = True
- up_mat = [[0 for c in range(n)] for r in range(n)]
- right_mat = [[0 for c in range(n)] for r in range(n)]
- mines_left = len(nums)
- result = 0
- while mines_left > 0:
- compute_up_mat()
- compute_right_mat()
- x = 0
- y = n - 1
- result += 1
- while x < n and y >= 0:
- if mat[y][x]:
- mat[y][x] = False
- mines_left -= 1
- if mines_left == 0:
- break
- if x < n-1 and right_mat[y][x+1] > 0:
- x += 1
- elif y > 0 and up_mat[y-1][x] > 0:
- y -= 1
- if y < 0:
- pass
- else:
- break
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement