Cod sursa(job #1558813)

Utilizator mirupetPetcan Miruna mirupet Data 29 decembrie 2015 16:52:23
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
using namespace std;

int K, X, Y;
int Hilbert(int, int, int);

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

        scanf("%d%d%d", &K, &Y, &X);
        printf("%d", Hilbert(K, X, Y));
    }

int Hilbert(int k, int x, int y)
{
    if (!k)     return 0;
    int put = 1 << (k - 1);

    if (x <= put && y <= put)
        return Hilbert(k - 1, y, x);

    if (x <= put)
        return Hilbert(k - 1, 2 * put - y + 1, put - x + 1) + 3 * put * put;

    if (y <= put)
        return Hilbert(k - 1, x - put, y) + put * put;

    return Hilbert(k - 1, x - put, y - put) + 2 * put * put;
}