Pagini recente » Cod sursa (job #210793) | Cod sursa (job #298904) | Cod sursa (job #386292) | Cod sursa (job #1927601) | Cod sursa (job #2343689)
#include <fstream>
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int nr,l,k,x,y,n,d[5],dx,dy;
void init(int p){
if(p==3||p==4){
d[1]=0;
d[2]=3;
d[3]=1;
d[4]=2;
}
else if(p==1){
d[1]=0;
d[2]=1;
d[3]=3;
d[4]=2;
}
else if(p==2){
d[1]=2;
d[2]=3;
d[3]=1;
d[4]=0;
}
}
void hilbert(int l){
if(k>1){
if(dx<=l/2 && dy<=l/2){
nr+=d[1]*l;
init(1);
}
else if(dx>l/2 && dy<=l/2){
nr+=d[2]*l;
dx-=l/2;
init(2);
}
else if(dx<=l/2 && dy>l/2){
nr+=d[3]*l;
dy-=l/2;
init(3);
}
else if(dx>l/2 && dy>l/2){
nr+=d[4]*l;
dx-=l/2;
dy-=l/2;
init(4);
}
k--;
hilbert(l/2);
}
}
int main()
{ f>>n>>x>>y;
l=1<<n;
k=n;
init(3);
dx=x;
dy=y;
hilbert(l);
if(dx==1 && dy==1)
nr+=0;
else if(dx==1 && dy==2)
nr+=2;
else if(dx==2 && dy==1)
nr++;
else
nr+=3;
g<<nr;
return 0;
}