Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def water_volume(island, a, b):
- result = 0
- max_height = max([height for row in island for height in row])
- rained_island = []
- for i in range(a):
- rained_island.append([])
- for j in range(b):
- if i == 0 or i == a - 1 or j == 0 or j == b - 1:
- rained_island[i].append(island[i][j])
- else:
- rained_island[i].append(max_height)
- is_changed = True
- while is_changed:
- is_changed = False
- for i in range(1, a - 1):
- for j in range(1, b - 1):
- min_height = min(rained_island[i - 1][j], rained_island[i][j - 1], rained_island[i][j + 1], rained_island[i + 1][j])
- if rained_island[i][j] > min_height and rained_island[i][j] != island[i][j]:
- rained_island[i][j] = min_height if min_height > island[i][j] else island[i][j]
- is_changed = True
- for i in range(a):
- for j in range(b):
- result += rained_island[i][j] - island[i][j]
- return result
- K = int(input())
- results = []
- for i in range(K):
- island = []
- N, M = (int(p) for p in input().split())
- for j in range(N):
- island.append([int(p) for p in input().split()])
- results.append(water_volume(island, N, M))
- for x in results:
- print(x)
Advertisement
Add Comment
Please, Sign In to add comment