Pagini recente » Cod sursa (job #3293717) | Cod sursa (job #665673) | Cod sursa (job #1057082) | Cod sursa (job #3293866) | Cod sursa (job #59517)
Cod sursa(job #59517)
#include <stdio.h>
#define pow(xx) (1<<(xx))
void swap(int &a,int &b)
{
int aux = a;
a = b;
b = aux;
}
int cost(int i,int j,int k)
{
if(!k || (i==1 && j==1))
return 0;
int lim = 1<<(k-1);
// stanga sus
if(i<=lim && j<=lim)
{
swap(i,j);
return cost(i,j,k-1);
}
// dreapta sus
if(i<=lim && j>lim)
{
j -= lim;
swap(i,j);
i = lim - i + 1;
j = lim - j + 1;
return 3+3*(pow(2*k-2)-1)+cost(i,j,k-1);
}
// stanga jos
if(i>lim && j<=lim)
{
i -= lim;
return 1+(pow(2*k-2)-1)+cost(i,j,k-1);
}
//dreapta jos
return 2+2*(pow(2*k-2)-1)+cost(i-lim,j-lim,k-1);
}
int main()
{
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
int i,j,k;
scanf("%d%d%d",&k,&j,&i);
printf("%d\n",cost(i,j,k));
return 0;
}