반응형
SMALL
#include <stdio.h>
int N, r, c;
int res;
int sqrt(int num, int N) {
int n = 0;
int res = 1;
for (int n = 0; n < N; ++n) {
res *= num;
}
return res;
}
void init() {
scanf("%d %d %d", &N, &r, &c);
}
void cal(int cs, int rs, int ce, int re) {
int cm = (cs + ce) / 2;
int rm = (rs + re) / 2;
if (cs == ce && cs == c && rs == re && rs == r) {
return;
}
if (r <= rm && c <= cm) {
cal(cs, rs, cm, rm);
} else if (r <= rm && cm < c) {
res += sqrt(cm - cs + 1, 2);
cal(cm + 1, rs, ce, rm);
} else if (rm < r && c <= cm) {
res += sqrt(cm - cs + 1, 2) * 2;
cal(cs, rm + 1, cm, re);
} else {
res += sqrt(cm - cs + 1, 2) * 3;
cal(cm + 1, rm + 1, ce, re);
}
}
int main(void) {
// freopen("1074.txt", "r", stdin);
init();
cal(0, 0, sqrt(2, N) - 1, sqrt(2, N) - 1);
printf("%d", res);
return 0;
}
쉽지 않은 문제, 골드 수준 되지 않나?
반응형
LIST
'알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
3006 - 터보소트 (1) | 2023.12.27 |
---|---|
1395 - 스위치 (1) | 2023.12.26 |
19646 - Random Generator (0) | 2023.12.24 |
1849 - 순열 (0) | 2023.12.24 |
18110 - solved.ac (1) | 2023.12.23 |