Pagini recente » Cod sursa (job #2377838) | Cod sursa (job #1592479) | Cod sursa (job #3255844) | Cod sursa (job #2504705) | Cod sursa (job #2490784)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
long long k, x, y;
long long DivideEtImpera(long long matSize, long long lin, long long col)
{
long long mij = matSize / 2;
if (matSize / 2 == 0)
return 0;
if (lin <= mij && col <= mij)
return DivideEtImpera(mij, col, lin);
if (lin <= mij && col > mij)
{
long long newCol = col - mij;
return mij * mij + DivideEtImpera(mij, lin, newCol);
}
if (lin > mij && col <= mij)
{
long long newLin = mij - col + 1;
long long newCol = mij * 2 - lin + 1;
return mij * mij * 3 + DivideEtImpera(mij, newLin, newCol);
}
if (lin > mij && col > mij)
{
long long newLin = lin - mij;
long long newCol = col - mij;
return mij * mij * 2 + DivideEtImpera(mij, newLin, newCol);
}
}
int main()
{
f >> k >> x >> y;
//cin >> k >> x >> y;
long long matSize = 1;
for (int i = 1; i <= k; i++)
matSize *= 2;
//cout << DivideEtImpera(matSize, x, y) << "\n";
g << DivideEtImpera(matSize, x, y) << "\n";
return 0;
}