Cod sursa(job #2173180)

Utilizator PostMaloneLiurca Daniel PostMalone Data 15 martie 2018 21:01:57
Problema Fractal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
#include<math.h>

using namespace std;

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

int solve(int k, int x, int y) {
	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);

	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, x - a, y);
	}
}

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

	in >> k >> x >> y;

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

	return 0;
}