Cod sursa(job #594606)

Utilizator RazvanSSavu Razvan RazvanS Data 8 iunie 2011 15:24:18
Problema Fractal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

#define file_input "fractal.in"
#define file_output "fractal.out"

#define K_MAX 15

int S[K_MAX+1];

int path ( int k , int x , int y ) {

	if(k==0) return 0;

	int mid = 1<<(k-1);

	if (x<=mid && y<=mid) return path(k-1,y,x);
	if (x>mid && y<=mid) return S[k-1]+1+path(k-1,x-mid,y);
	if (x>mid && y>mid) return 2*(S[k-1]+1)+path(k-1,x-mid,y-mid);
	if (x<=mid && y>mid) return 3*(S[k-1]+1)+path(k-1,2*mid-y+1,mid-x+1);

	return -1;
}

int init_size (int k) {

	S[1] = 3;
	int i;
	for(i=2;i<=k;++i)
		S[i] = 4*S[i-1]+3;
}

int main ( void ) {

	int k, x, y;
	FILE *fin = fopen(file_input,"r");
	FILE *fout = fopen(file_output,"w");
	
	fscanf(fin,"%d %d %d", &k, &y, &x);
	fclose(fin);

	init_size(k);

	fprintf(fout,"%d\n", path(k,x,y) );
	fclose(fout);

	return 0;
}