Cod sursa(job #766886)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 12 iulie 2012 13:28:54
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>

using namespace std;

int fractal(int k, int y, int x)
{
    if(k == 0)
        return 0;
    int newx, newy, aduna;
    int n = (1 << k) / 2;
    if(y <= n) {
        if(x <= n) {
            newy = x;
            newx = n - (n - y + 1) + 1;
            aduna = 0;
        }
        else {
            newy = n - (x - n) + 1;
            newx = n - y + 1;
            aduna = 3 * n * n;
        }
    }
    else {
        if(x <= n) {
            newy = y - n;
            newx = x;
            aduna = n * n;
        }
        else {
            newy = y - n;
            newx = x - n;
            aduna = 2 * n * n;
        }
    }
    return aduna + fractal(k - 1, newy, newx);
}

int k, x, y;

int main()
{
    freopen ("fractal.in", "r", stdin);
    freopen ("fractal.out", "w", stdout);

    scanf("%d %d %d", &k, &x, &y);
    printf("%d", fractal(k, y, x));
}