아래는 시간초과(42%에서) 코드이다.

#include<iostream>
#include<queue>

using namespace std;

struct Node
{
	int energy = 5;
	priority_queue<int> q; // 칸에 심어진 나무들
	priority_queue<int> canBreed; // 번식할 수 있는 나무들
};

int N, M, K;
Node MAP[11][11]; // 상도의 땅 정보
int newTree[11][11];
int supply[11][11]; // 겨울철 영양 공급
int Next[8][2] = { {-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0} };
void init() {
	cin >> N >> M >> K;
	for (int y = 1; y <= N; y++) {
		for (int x = 1; x <= N; x++) {
			cin >> supply[y][x];
		}
	}
	for (int i = 0; i < M; i++) {
		int y, x, z;
		cin >> y >> x >> z;
		MAP[y][x].q.push(-z); // 좌표에 어린 나무부터 영양분을 먹게 심음.
	}
}
void spring() {
	for (int y = 1; y <= N; y++) {
		for (int x = 1; x <= N; x++) {
			priority_queue<int> temp;
			bool isSummer = false;
			while (!MAP[y][x].q.empty()) {
				int tree = -MAP[y][x].q.top();
				MAP[y][x].q.pop();
				if (isSummer) { // 여름엔 양분을 못먹은 나무가 죽는다.
					MAP[y][x].energy += (tree / 2);
					continue;
				}
				if (tree <= MAP[y][x].energy) {
					MAP[y][x].energy -= tree; // 나무의 나이만큼 영양분을 먹는다.
					tree += 1; // 나무는 나이+1
					if (tree % 5 == 0) MAP[y][x].canBreed.push(-tree); // 번식 할 수 있는 나무는 따로 또 저장
					temp.push(-tree);
				}
				else { // 더 이상 양분을 먹을 수 있는 나무가 없다면 여름으로
					isSummer = true;
					MAP[y][x].energy += (tree / 2);
				}
			}
			MAP[y][x].q = temp;
		}
	}
}
void autumn() {
	for (int y = 1; y <= N; y++) {
		for (int x = 1; x <= N; x++) {
			while (!MAP[y][x].canBreed.empty()) { // 번식 할 수 있는 나무 모두 번식
				MAP[y][x].canBreed.pop();
				for (int i = 0; i < 8; i++) { // 주변으로 번식
					int nx = x + Next[i][0];
					int ny = y + Next[i][1];
					if (nx > 0 && ny > 0 && nx <= N && ny <= N) {
						MAP[ny][nx].q.push(-1);
					}
				}
			}
		}
	}
}
void winter() {
	for (int y = 1; y <= N; y++) {
		for (int x = 1; x <= N; x++) {
			MAP[y][x].energy += supply[y][x];
		}
	}
}
void sol() {
	while (K--) {
		spring();
		autumn();
		winter();
	}
	int livingTree = 0;
	for (int y = 1; y <= N; y++) {
		for (int x = 1; x <= N; x++) {
			livingTree += MAP[y][x].q.size();
		}
	}
	cout << livingTree;
}
int main() {
	ios_base::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL);
	init();
	sol();
	return 0;
}