Pagini recente » Cod sursa (job #2424546) | Cod sursa (job #2673853) | Cod sursa (job #2222175) | Cod sursa (job #2065827) | Cod sursa (job #2556585)
#include <fstream>
#include <vector>
using namespace std;
int TotalSteps(int order)
{
int steps = 0;
for (int i = 1; i <= order; i += 1) {
steps = 4 * steps + 3;
}
return steps;
}
int Solve(int order, int x, int y)
{
if (order == 0) {
return 0;
}
int half = (1 << order) / 2;
if (x <= half && y <= half) {
return Solve(order - 1, y, x);
}
if (x > half && y <= half) {
return TotalSteps(order - 1) + 1
+ Solve(order - 1, x - half, y);
}
if (x > half && y > half) {
return TotalSteps(order - 1) * 2 + 2
+ Solve(order - 1, x - half, y - half);
}
return TotalSteps(order - 1) * 3 + 3
+ Solve(order - 1, half - (y - half) + 1, half - x + 1);
}
int main()
{
ifstream fin("fractal.in");
ofstream fout("fractal.out");
int order, col, row;
fin >> order >> col >> row;
auto res = Solve(order, row, col);
fout << res << "\n";
return 0;
}