Pagini recente » Cod sursa (job #613168) | Cod sursa (job #1875539) | Cod sursa (job #2693821) | Cod sursa (job #749293) | Cod sursa (job #1118620)
#include<cstdio>
#include<algorithm>
#define pow(xx) (1<<(xx))
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)
{
int aux=i;
i=j;
j=aux;
return cost(i,j,k-1);
}
// dreapta sus
if(i<=lim && j>lim)
{
j-=lim;
int aux=i;
i=j;
j=aux;
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;
}