Cod sursa(job #1015426)

Utilizator andy1496Casu-Pop Andrei andy1496 Data 24 octombrie 2013 17:03:42
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

 
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("fractal.in", "r", stdin);
    freopen("fractal.out", "w", stdout);
 
    scanf("%d %d %d", &k, &x, &y);
 
    printf("%d", frac(k, x, y));
 
    return 0;
}