Cod sursa(job #293092)

Utilizator DraStiKDragos Oprica DraStiK Data 31 martie 2009 22:28:46
Problema Fractal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
int x,y,m;
int put (int val)
{
    return 1<<val;
}
void schimb (int &i,int &j)
{
    int aux;
    aux=i;
    i=j;
    j=aux;
}
int fractal (int i,int j,int k)
{
    int d;
    if (!k || (i==1 && j==1))
        return 0;
    d=put (k-1);
    if(i<=d && j>d)
    {
        j-=d;
        schimb (i,j);
        i=d-i+1;
        j=d-j+1;
        return 3+3*(put (2*k-2)-1)+fractal (i,j,k-1);
    }
    if(i>d && j<=d)
    {
        i-=d;
        return 1+(put (2*k-2)-1)+fractal (i,j,k-1);
    }
    return 2+2*(put (2*k-2)-1)+fractal (i-d,j-d,k-1);    
}
int main ()
{
    freopen ("fractal.in","r",stdin);
    freopen ("fractal.out","w",stdout);
    scanf ("%d%d%d",&m,&x,&y);
    printf ("%d",fractal (y,x,m));
    return 0;
}