Cod sursa(job #403192)

Utilizator Addy.Adrian Draghici Addy. Data 24 februarie 2010 18:19:44
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>

int k, x, y, sol;

void fractal(int x, int y, int k) {
	int m = (1 << (k-1));
	
	if (k == 1) {
		if (x == 2 && y == 1) sol += 1;
		if (x == 2 && y == 2) sol += 2;
		if (x == 1 && y == 2) sol += 3;
	}
	else {
		if (x <= m && y <= m) {
			fractal(y, x, k-1);
			//fractal(x, y, k-1);
		}
		if (x > m && y <= m) {
			sol += m * m;
			fractal(x-m, y, k-1);
		}
		if (x > m && y > m) {
			sol += 2 * m * m;
			fractal(x-m, y-m, k-1);
		}
		if (x <= m && y > m) {
			sol += 3 * m * m;
			//y2 = x; x2 = 2 * m - y + 1;
			//fractal(m-y+1, x, k-1);
			fractal(2*m-y+1, m-x+1, k-1);
		}
	}
}

int main() {
	
	FILE *f = fopen("fractal.in", "r");
	FILE *g = fopen("fractal.out", "w");
	
	fscanf(f, "%d %d %d", &k, &x, &y);
	
	fractal(y, x, k);
	
	fprintf(g, "%d", sol);
	
	fclose(f); fclose(g);
	
	return 0;
}