Cod sursa(job #515312)

Utilizator marinaMarina Horlescu marina Data 21 decembrie 2010 01:27:19
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>

int main()
{
	int k, x, y, dimCadran, cadran, rez = 0, aux;
	
	freopen("fractal.in", "r", stdin);
	freopen("fractal.out", "w", stdout);
	
	scanf("%d %d %d", &k, &x, &y);
	for(; k >= 1; --k)
	{
		dimCadran = 1<<(k-1);
		if(x <= dimCadran)
			if(y <= dimCadran) cadran = 1; //x , y < d
			else cadran = 2; 			 //x < d, y > d
		else if(y <= dimCadran) cadran = 4; //x > d, y < d
			else cadran = 3;
		
		rez += dimCadran * dimCadran * (cadran-1);
		
		if(cadran == 2)
		{
			y -= dimCadran;
		}
		else if(cadran == 3)
		{
			x -= dimCadran; y -= dimCadran;
		}			
		else if(cadran == 4)
		{
			x -= dimCadran;
			aux = x; x = dimCadran+1 - y; y = dimCadran+1 - aux;
		}
		else if(cadran == 1)
		{
			aux = x; x = y; y = aux;
		}
	}
	printf("%d\n", rez);
	return 0;
}