티스토리 뷰
백준 :: BOJ :: 16235 :: 나무 재테크
출처 : https://www.acmicpc.net/problem/16235
#include <bits/stdc++.h>
using namespace std;
struct Tr {
int i, j, a;
bool operator<(const Tr& vv) const { return a < vv.a; }
};
int N, M, K, A[11][11], arr[11][11];
int di[] = { -1,-1,-1,0,1,1,1,0 }, dj[] = { -1,0,1,1,1,0,-1,-1 };
vector <Tr> v, tv; queue<Tr> q;
inline bool chk(int i, int j) { return (i > 0 && j > 0 && i <= N && j <= N) ? true : false; }
void year() {
sort(v.begin(), v.end()); Tr t;
for (int i = 0; i < v.size(); i++) {
t = v[i];
if (arr[t.i][t.j] >= t.a) { arr[t.i][t.j] -= t.a; t.a++; tv.push_back(t); }
else q.push(t);
}
v.swap(tv); tv.clear();
while (!q.empty()) {
t = q.front(); q.pop();
arr[t.i][t.j] += (t.a / 2);
}
for (int i = 0; i < v.size(); i++) {
if (v[i].a % 5 == 0) {
for (int d = 0; d < 8; d++) {
t = v[i]; t.i += di[d]; t.j += dj[d]; t.a = 1;
if (chk(t.i, t.j)) v.push_back(t);
}
}
}
if (K) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) arr[i][j] += A[i][j];
}
int main() {
std::ios::sync_with_stdio(false); cin.tie(0);
cin >> N >> M >> K;
for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) {
cin >> A[i][j]; arr[i][j] = 5;
}
while (M--) {
Tr tmp; cin >> tmp.i >> tmp.j >> tmp.a;
v.push_back(tmp);
}
while (K--) {
year();
}
cout << v.size();
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 17144] 미세먼지 안녕! (2) | 2019.05.14 |
---|---|
[BOJ 3190] 뱀 (0) | 2019.01.21 |
[BOJ 16234] 인구 이동 (0) | 2019.01.09 |
[BOJ 16236] 아기 상어 (0) | 2019.01.09 |
[BOJ 5373] 큐빙 (2) | 2018.10.25 |
- Total
- Today
- Yesterday
- 17144
- 2018 카카오 블라인드 채용
- 연구소 3
- 알고리즘
- 17142
- 백준
- 17779
- hackerrank
- 입출력
- 미세먼지 안녕!
- SWEA
- 17837
- scanf
- 17140
- 삼성
- DFS
- 17143
- SW Expert Academy
- 팁
- string
- 역량 테스트
- 새로운 게임 2
- 이차원 배열과 연산
- DP
- STL
- 시간 복잡도
- 트렌드
- 2018 KAKAO BLIND RECRUITMENT
- 게리맨더링 2
- boj
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |