Pagini recente » Cod sursa (job #3304171) | Cod sursa (job #1339061) | Cod sursa (job #3312360) | Cod sursa (job #1467049) | Cod sursa (job #3319668)
#include <fstream>
using namespace std;
ifstream fin("fractal.in");
ofstream fout("fractal.out");
int k, x, y;
/// dir = 0 --> S
/// dir = 1 --> E
/// dir = 2 --> N
/// dir = 3 --> V
int solve(int k, int x, int y) {
if (k == 0) {
return 0;
}
int mid = (1 << (k - 1));
int value = (1 << (2 * (k - 1)));
if (x <= mid && y <= mid) {
return solve(k - 1, y, x);
}
if (x <= mid && y > mid) {
return value + solve(k - 1, x, y - mid);
}
if (x > mid && y > mid) {
return 2 * value + solve(k - 1, x - mid, y - mid);
}
return 3 * value + solve(k - 1, mid - y + 1, (1 << k) - x + 1);
}
int main() {
fin >> k >> x >> y;
fout << solve(k, x, y);
return 0;
}