Cod sursa(job #789709)

Utilizator vlad2901Vlad Berindei vlad2901 Data 18 septembrie 2012 23:09:27
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>

int position(int, int, int);

int main()
{

    int k, x, y, d;

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

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

    d = 1<<k;

    printf("%d", position(d, x, y));

    return 0;
}

int position(int ord, int x, int y)
{
    if(ord == 1)
    {
        return 0;
    }

    ord /= 2;

    if(x <= ord && y <= ord)
    {
        //return position(ord, y, ord-x);
        return position(ord, y, x);
    }

    if(x <= ord && y > ord)
    {
        return ord * ord + position(ord, x, y-ord);
    }

    if(x > ord && y > ord)
    {
        return 2 * ord * ord + position(ord, x-ord, y-ord);
    }

    if(x > ord && y <= ord)
    {
        //return 3 * ord * ord + position(ord, ord-y, x-ord);
        return 3 * ord * ord + position(ord, ord-y+1, 2*ord-x+1);
    }

}