Pagini recente » Cod sursa (job #598452) | Cod sursa (job #2647827) | Cod sursa (job #2762474) | Cod sursa (job #3235274) | Cod sursa (job #954213)
Cod sursa(job #954213)
#include <fstream>
unsigned getHilLen(unsigned k, unsigned x, unsigned y){
if(k==1){
if(x<=(1u<<(k-1))&&y<=(1u<<(k-1))) return 0; //st sus
else if(x<=(1u<<(k-1))) return 1; //st jos
else if(y<=(1u<<(k-1))) return 3; //dr sus
else return 2; //dr jos
}
else if(x<=(1u<<(k-1))&&y<=(1u<<(k-1))) //st sus
return getHilLen(k-1,y,x);
else if(x<=(1u<<(k-1))) //st jos
return (1u<<k) + getHilLen(k-1,x,y-(1u<<(k-1)));
else if(y<=(1u<<(k-1))) //dr sus
return 3*(1u<<k) + getHilLen(k-1,(1u<<(k-1))-y+1,(1u<<k)-x+1);
else //dr jos
return 2*(1u<<k) + getHilLen(k-1,x-(1u<<(k-1)),y-(1u<<(k-1)));
}
int main(){
std::ifstream fin("fractal.in");
std::ofstream fout("fractal.out");
unsigned K,x,y;
fin>>K>>x>>y;
fout<<getHilLen(K,x,y)<<'\n';
}