def solve(n, m, map, moves, moves_number):
if moves_number != 0:
for i in range(1, moves_number+1):
if map[moves[i][0]][moves[i][1]] == 0:
map[moves[i][0]][moves[i][1]] = 1
continue
if map[moves[i][0]][moves[i][1]] == 1:
map[moves[i][0]][moves[i][1]] = 0
continue
moved_cubes = 1
output = 0
while moved_cubes > 0:
moved_cubes = 0
for i in range(n):
for j in range(m):
if map[i][j] == 0:
continue
if i == 0:
if map[i+1][j] == 0:
map[i][j] = 0
moved_cubes += 1
continue
if i == n-1:
if map[i-1][j] == 0:
map[i][j] = 0
moved_cubes += 1
continue
if j == 0:
if map[i][j+1] == 0:
map[i][j] = 0
moved_cubes += 1
continue
if j == m-1:
if map[i][j-1] == 0:
map[i][j] = 0
moved_cubes += 1
continue
if i == 0 or i == n-1 or j == 0 or j == m-1:
continue
if (map[i-1][j] == 0 and map[i+1][j] == 0) or (map[i][j-1] == 0 and map[i][j+1] == 0):
map[i][j] = 0
moved_cubes += 1
continue
output += moved_cubes
return output
buf = input()
n = int(buf.split()[0])
m = int(buf.split()[1])
k = int(buf.split()[2])
q = int(buf.split()[3])
cubes = [[0, 0] for i in range(k)]
for i in range(k):
buf = input()
cubes[i][0] = int(buf.split()[0]) - 1
cubes[i][1] = int(buf.split()[1]) - 1
moves = [[0, 0] for i in range(q+1)]
for i in range(1, q+1):
buf = input()
moves[i][0] = int(buf.split()[0]) - 1
moves[i][1] = int(buf.split()[1]) - 1
moves[0][0] = -1
moves[0][1] = -1
for i in range(q+1):
map = [[0 for j in range(m)] for j in range(n)]
for j in range(k):
map[cubes[j][0]][cubes[j][1]] = 1
print(solve(n, m, map, moves, i))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | def solve(n, m, map, moves, moves_number): if moves_number != 0: for i in range(1, moves_number+1): if map[moves[i][0]][moves[i][1]] == 0: map[moves[i][0]][moves[i][1]] = 1 continue if map[moves[i][0]][moves[i][1]] == 1: map[moves[i][0]][moves[i][1]] = 0 continue moved_cubes = 1 output = 0 while moved_cubes > 0: moved_cubes = 0 for i in range(n): for j in range(m): if map[i][j] == 0: continue if i == 0: if map[i+1][j] == 0: map[i][j] = 0 moved_cubes += 1 continue if i == n-1: if map[i-1][j] == 0: map[i][j] = 0 moved_cubes += 1 continue if j == 0: if map[i][j+1] == 0: map[i][j] = 0 moved_cubes += 1 continue if j == m-1: if map[i][j-1] == 0: map[i][j] = 0 moved_cubes += 1 continue if i == 0 or i == n-1 or j == 0 or j == m-1: continue if (map[i-1][j] == 0 and map[i+1][j] == 0) or (map[i][j-1] == 0 and map[i][j+1] == 0): map[i][j] = 0 moved_cubes += 1 continue output += moved_cubes return output buf = input() n = int(buf.split()[0]) m = int(buf.split()[1]) k = int(buf.split()[2]) q = int(buf.split()[3]) cubes = [[0, 0] for i in range(k)] for i in range(k): buf = input() cubes[i][0] = int(buf.split()[0]) - 1 cubes[i][1] = int(buf.split()[1]) - 1 moves = [[0, 0] for i in range(q+1)] for i in range(1, q+1): buf = input() moves[i][0] = int(buf.split()[0]) - 1 moves[i][1] = int(buf.split()[1]) - 1 moves[0][0] = -1 moves[0][1] = -1 for i in range(q+1): map = [[0 for j in range(m)] for j in range(n)] for j in range(k): map[cubes[j][0]][cubes[j][1]] = 1 print(solve(n, m, map, moves, i)) |
English