Cod sursa(job #471350)

Utilizator blasterzMircea Dima blasterz Data 18 iulie 2010 13:14:33
Problema Fractal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <cstdio>

inline int f (int k, int x, int y)
{
	if (k == 1)
		return (x == 1) ? (y - 1) : (4 - y);

	int p = 1 << (k - 1);
	int q = 1 << (2 * k - 2);
	int t = 1 << k;

	if (x > p && y <= p)
		return 3 * t + f (k - 1, p + 1 - y, q + 1 - x);
	if (x > p && y > p)
		return 2 * q + f (k - 1, x - p, y - p);
	if (x <= p && y > p)
		return q + f (k - 1, x, y - p);
	if (x <= p && y <= p)
		return f (k - 1, y, x);
}

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

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

	printf ("%d\n",f (k, x, y));

	return 0;
}