1074 : Z

풀이

약간의 커팅이 필요하다.

코드

#include <cstdio>
#include <cstdlib>

int n, r, c;

void f(int x, int y, int s, int cnt) {
    if (s == 0 && x == r && y == c) {
        printf("%d\n", cnt);
        exit(0);
    }

    if (r < x || c < y || x + s*2 <= r || y + s*2 <= c) return;

    int nx = x + s, ny = y + s, ns = s*s;
    s /= 2;
    f(x, y, s, cnt);
    f(x, ny, s, cnt + ns);
    f(nx, y, s, cnt + ns*2);
    f(nx, ny, s, cnt + ns*3);
}

int main() {
    scanf("%d %d %d", &n, &r, &c);
    f(0, 0, 1 << (n - 1), 0);
    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-06-24 22:17

Read more posts by this author