Cod sursa(job #371118)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 3 decembrie 2009 21:09:39
Problema Fractal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

int d[17];

int z(int x,int y,int n)
{
	int 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=x;
			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=d[n]-x+1;
			x=a;
			cnt=z(x,y,n);
		}
		return cnt;
	}
	else
	{
	 if ((x==1)&&(y==1)) return 1;
	 if ((x==1)&&(y==2)) return 4;
	 if ((x==2)&&(y==1)) return 2;
	 return 3;
	}
}

int main()
{
	int 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("%d%d",&n,&k);
	for (i=1;i<k+1;i++)
	{
	 scanf("%d%d",&x,&y);
	 printf("%d\n",z(x,y,n));
	}
	return 0;
}