Cod sursa(job #1822384)

Utilizator dcutitoiuCutitoiu Adrian-Nicolae dcutitoiu Data 4 decembrie 2016 20:07:10
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <math.h>
#include <vector>
#include <string.h>
#include <iostream>
#include <fstream>

using namespace std;

int fractal(int K, int X, int Y)
{
	int _2ToK		= (1 << K);
	int power = (1 << (K - 1));

	// Cazul de baza
	if (K == 1 && X == 1 && Y == 1)
		return 0;
	if (K == 1 && X == 1 && Y == 2)
		return 1;
	if (K == 1 && X == 2 && Y == 2)
		return 2;
	if (K == 1 && X == 2 && Y == 1)
		return 3;

	// Cadranul 1
	if (X <= power && Y <= power)
	{
		return fractal(K - 1, Y, X);
	}

	// Cadranul 2
	if (X <= power && Y > power)
	{
		return power * power + fractal(K - 1, X, Y - power);
	}
	// Cadranul 3
	if ((X > power && Y > power))
	{
		return 2 * power * power + fractal(K - 1, X - power, Y - power);
	}
	// Cadranul 4
	return 3 * power * power + fractal(K - 1, power - Y + 1, 2 * power - X + 1);
}

int main() 
{
	ifstream in("fractal.in");
	ofstream out("fractal.out");

	int k, x, y;
	in >> k >> x >> y;

	out << fractal(k, x, y);

	return 0;
}