-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path16235.py
More file actions
94 lines (73 loc) ยท 2.53 KB
/
16235.py
File metadata and controls
94 lines (73 loc) ยท 2.53 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 1-index์
# ์ฒ์์๋ ๋ชจ๋ ์นธ์ 5๋ํผ์ ์๋ถ์ด ์์
# M๊ฐ์ ๋๋ฌด๋ฅผ ๊ตฌ๋งค -> ๋
์ฌ์
# ํ ์นธ์ ์ฌ๋ฌ๊ฐ์ ๋๋ฌด ์ฌ์ ์ ์์
# ๋ด์๋ ๋์ด๋งํผ ์๋ถ ๋จน๊ณ , ๋์ด +1
# ํ๋์ ์นธ์ ์ฌ๋ฌ๊ฐ์ ๋๋ฌด๊ฐ ์์ผ๋ฉด ์ด๋ฆฐ ๋๋ฌด๋ถํฐ
# ์๋ถ์ ๋จน๊ณ
# ๋ง์ฝ ์๋ถ์ด ์์ด์, ๋์ด๋งํผ ๋ชป ๋จน์ผ๋ฉด ์ฆ์ ์ฃฝ์
# ์ฌ๋ฆ์๋ ์ฃฝ์ ๋๋ฌด๊ฐ ์๋ถ์ผ๋ก ๋ณํจ
# ์ฃฝ์ ๋๋ฌด ๋์ด๋ฅผ 2๋ก ๋๋ ๊ฐ์ด ์๋ถ์ผ๋ก ์ถ๊ฐ (x ์์์ )
# ๊ฐ์์๋ ๋ฒ์
# ๋๋ฌด์ ๋์ด๊ฐ 5์ ๋ฐฐ์, ์ธ์ ํ 8๊ฐ์ ์นธ์ ๋์ด๊ฐ 1์ธ ๋๋ฌด
# ์ฃผ๋ณ 3*3 (๋ฒ์ ๋ด์์ฌใด)
# ๊ฒจ์ธ์๋ A๋งํผ ์๋ถ์ด ์ถ๊ฐํจ
# K ๋
ํ ๋๋ฌด์ ๊ฐ์
import sys
input = sys.stdin.readline
N, M, K = map(int, input().split())
A = []
for _ in range(N) :
A.append(list(map(int, input().split())) )
import heapq
from collections import deque
# ๋๋ฌด ๋์ด
grid = [[deque() for _ in range(N)] for _ in range(N)]
# ๋๋ฌด ๋์ด ๊ด๋ฆฌ q
q = []
for _ in range(M) :
x, y, z = map(int, input().split())
x -= 1
y -= 1 # 0- index๋ก ๋ง์ถ๊ธฐ
grid[x][y].append(z)
heapq.heappush(q, [z, y, x])
# ์ฌ์ ๋ ฌ
for i in range(N):
for j in range(N):
grid[i][j] = deque(sorted(grid[i][j]))
# nutrition์ด ์๋ถ
nutrition = [[5]*N for _ in range(N)]
def one_year() :
dead_tree = deque()
# ๋ด
for y in range(N) :
for x in range(N) :
length = len(grid[y][x])
dead_nutrition = 0
for _ in range(length) :
age = grid[y][x].popleft()
# ์๋ถ์ ๋จน์ง ๋ชปํ๋ ๊ฒฝ์ฐ
if age > nutrition[y][x] :
dead_nutrition += (age//2)
else : # ์๋ถ์ ๋จน์ ์ ์๋ ๊ฒฝ์ฐ
nutrition[y][x] -= (age)
grid[y][x].append(age + 1)
nutrition[y][x] += dead_nutrition
d = [[-1,-1], [-1,0], [-1,1], [0,-1], [0,1],[1,-1],[1,0],[1,1]]
# ๊ฐ์
for y in range(N) :
for x in range(N ) :
for tree_age in grid[y][x] :
if tree_age % 5 == 0 :
for dir in range(8 ):
ty, tx = y + d[dir][0] , x + d[dir][1]
if 0<=ty<N and 0<=tx<N :
grid[ty][tx].appendleft(1)
nutrition[y][x] += A[y][x]
for year in range(K) :
one_year()
answer = 0
for y in range(N) :
for x in range(N) :
answer += len(grid[y][x])
print(answer)