Cod sursa(job #886058)

Utilizator MagnvsDaniel Constantin Anghel Magnvs Data 22 februarie 2013 17:07:46
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
 
long d[17];
 
long z(long x,long y,long n)
{
    long cnt,a;
    if (n>1)
    {
        --n;
        if ((x>d[n])&&(y>d[n]))
        {
            x-=d[n];
            y-=d[n];
            cnt=2*d[n]*d[n]+z(x,y,n);
        }
        else if ((x<=d[n])&&(y>d[n]))
        {
            y-=d[n];
            a=y;
            y=d[n]-x+1;
            x=d[n]-a+1;
            cnt=3*d[n]*d[n]+z(x,y,n);
        }
        else if((x>d[n])&&(y<=d[n]))
        {
            x-=d[n];
            cnt=d[n]*d[n]+z(x,y,n);
        }
        else
        {
            a=y;
            y=x;
            x=a;
            cnt=z(x,y,n);
        }
        return cnt;
    }
    else
    {
     if ((x==1)&&(y==1)) return 0;
     if ((x==1)&&(y==2)) return 3;
     if ((x==2)&&(y==1)) return 1;
     return 2;
    }
}
 
int main()
{
    long x,y,n,k,i;
    freopen("fractal.in","r",stdin);
    freopen("fractal.out","w",stdout);
    d[0]=1;
    for (i=1;i<16;i++) d[i]=2*d[i-1];
    scanf("%ld%ld%ld",&n,&y,&x);
    printf("%ld\n",z(x,y,n));
    return 0;
}