Pagini recente » Cod sursa (job #1992728) | Cod sursa (job #1614432) | Cod sursa (job #715545) | Cod sursa (job #1912884) | Cod sursa (job #471352)
Cod sursa(job #471352)
#include <cstdio>
inline int f (int k, int x, int y)
{
if (k == 1)
return (x == 1) ? (y - 1) : (4 - y);
int p = 1 << (k - 1);
int q = 1 << (2 * k - 2);
int t = 1 << k;
if (x > p && y <= p)
return 3 * q + f (k - 1, p + 1 - y, t + 1 - x);
if (x > p && y > p)
return 2 * q + f (k - 1, x - p, y - p);
if (x <= p && y > p)
return q + f (k - 1, x, y - p);
if (x <= p && y <= p)
return f (k - 1, y, x);
}
int main ()
{
freopen ("fractal.in","r", stdin);
freopen ("fractal.out", "w", stdout);
int k, x, y;
scanf ("%d %d %d", &k, &x, &y);
printf ("%d\n",f (k, x, y));
return 0;
}