Cod sursa(job #2173777)

Utilizator PostMaloneLiurca Daniel PostMalone Data 16 martie 2018 00:46:56
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<iostream>
#include<math.h>

using namespace std;

ifstream in("fractal.in");
ofstream out("fractal.out");

int solve(int k, int x, int y) {
	cout << k << " " << x << " " << y << endl;

	if(k == 0)
		return 0;

	if(k == 1) {
		if(x == 1 && y == 1)
			return 0;
		if(x == 1 && y == 2)
			return 1;
		if(x == 2 && y == 1)
			return 3;
		if(x == 2 && y == 2)
			return 2;
	}

	int a = pow(2, k - 1);

	//cout << " " << a << endl;

	if(x <= a && y <= a) { // stanga sus
		return solve(k - 1, y, x);
	}

	if(x <= a && y > a) { // stanga jos
		return a * a + solve(k - 1, x, y - a);
	}

	if(x > a && y > a) { // dreapta jos
		return 2 * a * a + solve(k - 1, x - a, y - a);
	}

	if(x > a && y <= a) { // dreapta sus
		return 3 * a * a + solve(k - 1, a - y + 1, 2 * a - x + 1);
	}

	return 0;
}

int main() {
	int k, x, y;

	in >> k >> x >> y;

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

	return 0;
}