Cod sursa(job #272522)

Utilizator CezarMocanCezar Mocan CezarMocan Data 7 martie 2009 12:22:49
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

using namespace std;

int n, x, y, sol;

int rec(int n, int x, int y) {
	int dn1 = (1 << (n - 1));
	if (n == 1) {
		if (x == 1 && y == 2)
			return 4;
		else
			return x + y - 1;
	}
	if (x <= dn1 && y <= dn1) 
		return rec(n - 1, y, x);
	if (x > dn1 && y <= dn1) 
		return rec(n - 1, x - dn1, y) + dn1 * dn1;
	if (x > dn1 && y > dn1) 
		return rec(n - 1, x - dn1, y - dn1) + 2 * dn1 * dn1;
	if (x <= dn1 && y > dn1) 
		return rec(n - 1, dn1 - (y - dn1) + 1, dn1 - x + 1) + 3 * dn1 * dn1;	
	
}

int main() {
	freopen("fractal.in", "r", stdin);
	freopen("fractal.out", "w", stdout);
	
	scanf("%d%d%d", &n, &y, &x);
	printf("%d\n", rec(n, x, y) - 1);
	
	return 0;
}