Cod sursa(job #227980)

Utilizator ProtomanAndrei Purice Protoman Data 6 decembrie 2008 01:04:39
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

int p2[32];
int k, x, y;

int pasi(int k, int x, int y)
{
	if (k == 0)
		return 0;
	int jm = k - 1, ps = p2[(k - 1) << 1];
	if (y > p2[jm])
	{
		if (x <= p2[jm])
			return (ps + pasi(jm, x, y - p2[jm]));
		else return (ps * 2 + pasi(jm, x - p2[jm], y - p2[jm]));
	}
	else
	{
		if (x <= p2[jm])
			return (pasi(jm, y, x));
		else return (ps * 3 + pasi(jm, p2[jm] - y + 1, p2[k] - x + 1));
	}
}

int main()
{
	freopen("fractal.in","r",stdin);
	freopen("fractal.out","w",stdout);
	scanf("%ld %ld %ld", &k, &x, &y);
	p2[0] = 1;
	for (int i = 1; i <= k << 1; i++)
		p2[i] = p2[i - 1] << 1;
	printf("%ld\n", pasi(k, x, y));
	fclose(stdin);
	fclose(stdout);
	return 0;
}