Cod sursa(job #785199)

Utilizator andreeainfo_dAndreea Dutulescu andreeainfo_d Data 8 septembrie 2012 07:15:48
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 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));
	return 0;
}