Pagini recente » Cod sursa (job #1275585) | Cod sursa (job #834833) | Cod sursa (job #1169545) | Cod sursa (job #1892944) | Cod sursa (job #2631343)
#include <fstream>
using namespace std;
ifstream cin("fractal.in");
ofstream cout("fractal.out");
unsigned long long rez,vp[15];
void schimb(int &a,int &b)
{
int c=a;
a=b;
b=c;
}
void divide(int k,int l,int x,int y)
{
if(l!=1){
if(x<=(l/2) && y<=(l/2))
{
k--;
l/=2;
schimb(x,y);
}
else
if(x<=(l/2))
{
rez+=vp[k-1]*3+3;
y-=l/2;
k--;
l/=2;
int cx;
cx=x;
x=y;
y=l+1-cx;
}
else
if(y<=(l/2))
{
rez+=vp[k-1]+1;
x-=l/2;
k--;
l/=2;
}
else
{
rez+=vp[k-1]*2+2;
x-=l/2;
y-=l/2;
k--;
l/=2;
}
divide(k,l,x,y);
}
}
int main()
{
int k,x,y,i,put=1;
cin>>k>>y>>x;
vp[1]=3;
for(i=2;i<=14;i++)
{
vp[i]=vp[i-1]*4+3;
}
for(i=1;i<=k;i++)
put*=2;
divide(k,put,x,y);
cout<<rez+1;
return 0;
}