Cod sursa(job #349592)

Utilizator ZethpixZethpix Zethpix Data 20 septembrie 2009 13:19:44
Problema Fractal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
long a[5],nr,p,k,x,y,i,c;
int main(){
	FILE *f,*g;
	f=fopen("fractal.in","r");
	g=fopen("fractal.out","w");
	fscanf(f,"%ld%ld%ld",&k,&y,&x);
	a[1]=1;
	a[2]=2;
	a[3]=3;
	a[4]=4;
	p=1;
	nr=0;
	for(i=1;i<k;i++) p*=2;
	while(k!=1){
		c=0;
		if(1<=x&&x<=p)
			if(1<=y&&y<=p) c=1;
			else c=4;
		if(p+1<=x&&x<=p*2)
			if(1<=y&&y<=p) c=2;
			else c=3;
		if(a[c]==1){
			a[1]=4;
			a[2]=1;
			a[3]=2;
			a[4]=3;
		}
		else
		if(a[c]==2){
			a[1]=1;
			a[2]=2;
			a[3]=3;
			a[4]=4;
			x-=p;
			nr+=p*p;
		}
		else
		if(a[c]==3){
			x-=p;
			y-=p;
			nr+=p*p*2;
			a[1]=1;
			a[2]=2;
			a[3]=3;
			a[4]=4;
		}
		else
		if(a[c]==4){
			y-=p;
			nr+=p*p*3;
			a[1]=3;
			a[2]=2;
			a[3]=1;
			a[4]=4;
		}
		k--;
		p/=2;
	}
	fprintf(g,"%ld\n",nr);
	fclose(f);
	fclose(g);
	return 0;
}