ν°μ€ν 리 λ·°
λ¬Έμ
λ¬Έμ νμ΄
μνμ΄ μ£Όμ΄μ§ λ, μνμ μλ‘ κ²Ήμ³μ Έ μλ€. μ΄λ, μνμ λͺ λ Ήμ΄ λλΌ νμ νκ³ μΈμ ν μκ° κ°μ μμΈ κ²½μ° μ κ±°νλ λ°©μμ μ·¨νλ€. κ·Έ ν, λͺ λ Ήμ μν ν μ΅μ’ μ μΌλ‘ μνμ λ¨μ μλ₯Ό ν©νμ¬ μΆλ ₯νλ©΄ λ¬Έμ μ λ΅μ μ°Ύμ μ μλ€.
λ¬Έμ λ₯Ό νλ©΄μ μ£Όμν μ μ λ€μκ³Ό κ°λ€. μΈμ ν μλ₯Ό μ κ±°νλ©΄ λκ³ , μμ λ§ λ³΄κ³ λμ λμΆ© νμ΄μ μ΄μν κ³³μμ λ ν€λ§€λ€κ° μκ°μ 보λλ€.
- x, d, kκ° μ£Όμ΄μ§λ©΄ μν μ€ xμ λ°°μμΈ κ²½μ° λ€ κ°μ΄ νμ νλ€.
- μΈμ ν μκ° νλλ μλ κ²½μ°, νμ¬ μνμ μ ν μμ νκ· λ³΄λ€ μμ κ²½μ° 1μ λνκ³ ν° κ²½μ° 1μ λΊλ€.
- `q[r][c] += 1 if q[r][c] < avg else -1`κ³Ό κ°μ΄ μ΅μ΄μ μ½λλ₯Ό μμ±νμλ€.
- μ΄λ λ°λμ κ²½μ° `>=` μ΄κΈ°μ, μμ μ λ ₯ 5μμ μ€λ΅μ μΆλ ₯νκ² λλ€.
λλ¨Έμ§λ λ¬Έμ μ μ£Όμ΄μ§ 쑰건 λλ‘ κ·Έλλ‘ κ΅¬ννλ©΄, μ½κ² λ΅μ ꡬν μ μλ€. μνμ νμ μν€κΈ° μν΄μλ `deque`μ `rotate`λ₯Ό νμ©νμλ€. μκ³ λ°©ν₯(Clockwise)μ 1 * Kλ§νΌ rotate νκ³ , λ°μκ³ λ°©ν₯(Anti-Clockwise)μ -1 * K λ§νΌ rotate νλ©΄ λλ€.
μ½λ
from sys import stdin
from collections import deque
def del_adj_nums():
for x, d, k in query:
for i in range(N):
# xμ λ°°μκ° λλ μνμ νμ
if (i + 1) % x == 0:
q[i].rotate(change_dir[d] * k)
temp = []
# λ€λ₯Έ μνμ μΈμ ν μ«μ 체ν¬
for r in range(N - 1):
for c in range(M):
if q[r][c] == q[r + 1][c] and q[r][c]:
temp += ([r, c], [r + 1, c])
# κ°μ μνμ μΈμ ν μ«μ 체ν¬
for r in range(N):
for c in range(M):
if q[r][c - 1] == q[r][c] and q[r][c - 1]:
temp += ([r, c - 1], [r, c])
# μΈμ ν κ² μ€ λμΌν μ«μλ₯Ό λͺ¨λ 0μΌλ‘ λ§λ¦
for r, c in temp:
q[r][c] = 0
# νμ ν μΈμ νλ κ²μ΄ μλ κ²½μ°, νκ· μ λ°λΌ κ°μ λ³ν μν΄
if not temp:
zero_cnt = sum([q[i].count(0) for i in range(N)])
cnt = N * M - zero_cnt
cur_sum = sum(sum(q, deque()))
if not cnt:
continue
avg = cur_sum / cnt
for r in range(N):
for c in range(M):
if not q[r][c]:
continue
if q[r][c] > avg:
q[r][c] -= 1
elif q[r][c] < avg:
q[r][c] += 1
if __name__ == '__main__':
change_dir = {0: 1, 1: -1}
N, M, T = map(int, input().split())
q = deque()
for _ in range(N):
q.append(deque(map(int, input().split())))
query = [list(map(int, stdin.readline().split())) for _ in range(T)]
del_adj_nums()
print(sum(sum(q, deque())))
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 21610 λ§λ²μ¬ μμ΄μ λΉλ°λΌκΈ° (2) | 2021.04.28 |
---|---|
λ°±μ€: 17837 μλ‘μ΄ κ²μ 2 (0) | 2021.04.18 |
λ°±μ€: 19237 μ΄λ₯Έ μμ΄ (0) | 2021.04.17 |
λ°±μ€: 17779 κ²λ¦¬λ©λλ§ 2 (0) | 2021.04.16 |
λ°±μ€: 19238 μ€ννΈ νμ (0) | 2021.04.15 |