Cod sursa(job #954213)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 28 mai 2013 18:42:58
Problema Fractal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#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';
}