#include <bits/stdc++.h>
using namespace std;
#define INT long long int
INT n;
INT arr[129][129];
INT chk0, chk1;
INT cnt0, cnt1;
void F(INT x, INT y, INT l)
{
if(l == 1) {
if(arr[y][x] == 1) cnt1++;
else cnt0++;
return;
}
for(int i=y; i<y+l; i++) {
for(int j=x; j<x+l; j++) {
if(arr[i][j] == 0)
chk0 = 1;
else
chk1 = 1;
}
}
if(chk0 && chk1)
{
chk0 = chk1 = 0;
F(x, y, l/2);
chk0 = chk1 = 0;
F(x, y + l/2, l/2);
chk0 = chk1 = 0;
F(x + l/2, y, l/2);
chk0 = chk1 = 0;
F(x + l/2, y + l/2, l/2);
}
else{
if(chk0) cnt0++;
else cnt1++;
}
}
int main()
{
cin >> n;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cin >> arr[i][j];
}
}
F(0,0,n);
cout << cnt0 << endl << cnt1;
return 0;
}
-분할정복
'코딩 일지 > baekjoon' 카테고리의 다른 글
1992 (0) | 2023.12.30 |
---|---|
2447 (0) | 2023.12.28 |
1260 dfs와 bfs (0) | 2023.08.30 |
1655 가운데를 말해요 (0) | 2023.08.22 |
12865 - 평범한 배낭 (0) | 2023.08.17 |