Cod sursa(job #2490652)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 10 noiembrie 2019 17:10:46
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
using namespace std;

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

int resolve(int x, int y, int n, int sol)
{
	int mid = (1 << (n-1));

	if(n == 0)
	{
		return sol;
	}

	//primul cadran
	if(x <= mid && y <= mid)
	{
		//cout << "cadran1\n";
		return resolve(y, x, n-1, sol);
	}

	//al doilea cadran
	if(x <= mid && y > mid)
	{
		//cout << "cadran2\n";
		return resolve(2*mid+1-y, mid+1-x, n-1, sol + 3*mid*mid);
	}

	//al treilea cadran
	if(x > mid && y <= mid)
	{
		//cout << "cadran3\n";
		return resolve(x-mid,y, n-1, sol + mid*mid);
	}

	//al patrulea cadran
	if(x > mid && y > mid)
	{
		//cout << "cadran4\n";
		return resolve(x-mid, y-mid, n-1, sol + 2*mid*mid);
	}

}


int main()
{
	int k;
	fin >> k;
	int x, y;
	fin >> y >> x;
	fin.close();

	fout << resolve(x, y, k, 0);
	fout.close();
}