티스토리 뷰
백준 :: BOJ :: 17144 :: 미세먼지 안녕!
출처 : https://www.acmicpc.net/problem/17144
#include <bits/stdc++.h>
using namespace std;
#define F(x,y,u,p) for(int x=0; x<u; x++)for(int y=0;y<p;y++)
int ans, w, q[2][2], R, C, T, a[50][50], dd[4][2] = { {0,1},{-1,0},{0,-1},{1,0} }, dx[8] = { 0,1,2,3,0,3,2,1 };
inline bool chk(int i, int j) { return (i < 0 || j < 0 || i >= R || j >= C || a[i][j] < 0) ? false : true; }
int main() {
cin >> R >> C >> T;
F(i, j, R, C) { cin >> a[i][j]; if (a[i][j] < 0)q[w][0] = i,q[w++][1] = j; }
while (T--) {
int ta[50][50] = { 0, }, cz = 0;
F(i, j, R, C) {
if (a[i][j] > 4) {
int n = a[i][j] / 5, m = 0;
for (int d = 0; d < 4; d++) { int ni = i + dd[d][0], nj = j + dd[d][1]; if (chk(ni, nj)) { ta[ni][nj] += n; m++; } }
a[i][j] -= n * m;
}
}
F(i, j, R, C) a[i][j] += ta[i][j];
for (int i = 0; i < 2; i++) {
int cn = 0, cm = 0, ii = q[i][0], jj = q[i][1];
while (1) {
int ni = ii + dd[dx[cz]][0], nj = jj + dd[dx[cz]][1];
if (ni == q[i][0]&&nj==0) { cz++; break; }
if (chk(ni, nj)) { cm = a[ni][nj]; a[ni][nj] = cn; cn = cm; ii = ni; jj = nj; }
else cz++;
}
}
}
F(i, j, R, C) if (a[i][j] > 0) ans += a[i][j];
cout << ans;
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 17140] 이차원 배열과 연산 (0) | 2019.09.18 |
---|---|
[BOJ 17143] 낚시왕 (0) | 2019.05.14 |
[BOJ 3190] 뱀 (0) | 2019.01.21 |
[BOJ 16235] 나무 재테크 (0) | 2019.01.10 |
[BOJ 16234] 인구 이동 (0) | 2019.01.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 17144
- 17140
- SW Expert Academy
- 미세먼지 안녕!
- 17142
- SWEA
- 시간 복잡도
- 새로운 게임 2
- 게리맨더링 2
- STL
- hackerrank
- 2018 KAKAO BLIND RECRUITMENT
- 2018 카카오 블라인드 채용
- string
- 팁
- 17779
- scanf
- 백준
- 알고리즘
- 17837
- DP
- DFS
- 입출력
- 이차원 배열과 연산
- 트렌드
- 삼성
- 17143
- 역량 테스트
- boj
- 연구소 3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함