Cod sursa(job #371727)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 6 decembrie 2009 16:05:11
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 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;
}