Cod sursa(job #461048)

Utilizator SpiderManSimoiu Robert SpiderMan Data 5 iunie 2010 14:41:01
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>

const char FIN[] = "fractal.in";
const char FOU[] = "fractal.out";

int k, x, y, sol;

int frac ( int k, int x, int y )
{
    if ( k == 1 )
        if ( x == 1 )
            return y - 1;
        else
            return 4 - y;

    else
    {
        int l1 = 1 << ( k - 1 ), l2 = 1 << ( 2 * k - 2 ), l3 = 1 << k ;

        if ( x > l1 && y <= l1 )
            return 3 * l2 + frac ( k - 1 , l1 + 1 - y , l3 + 1 - x );

        if ( x > l1 && y > l1 )
            return 2 * l2 + frac ( k - 1 , x - l1 , y - l1 );

        if ( x <= l1 && y > l1 )
            return l2 + frac ( k - 1 , x , y - l1 );

        if ( x <= l1 && y <= l1 )
            return frac ( k - 1 , y , x );
    }
}

int main()
{
    freopen(FIN, "r", stdin);
    freopen(FOU, "w", stdout);

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

    printf("%d", frac(k, x, y));

    return 0;
}