Cod sursa(job #2020846)

Utilizator RobertLISARURobert Lisaru RobertLISARU Data 11 septembrie 2017 20:03:20
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <math.h>

using namespace std;

unsigned f(unsigned short k, unsigned x, unsigned y){
    if(k == 1){
        if(x == 1){
            if(y == 1) return 0;
            if(y == 2) return 1;
        }
        if(x == 2){
            if(y == 1) return 3;
            if(y == 2) return 2;
        }
    }
    else{
        if( x<=pow(2, k-1) && y<=pow(2, k-1))
            return f(k-1, y, x);
        if( x<=pow(2, k-1) && y>pow(2, k-1))
            return pow(4, k-1)-1+1 + f(k-1, x, y-pow(2, k-1));
        if( x>pow(2, k-1) && y>pow(2, k-1))
            return 2*(pow(4, k-1)-1)+2 + f(k-1, x-pow(2, k-1), y-pow(2, k-1));
        if( x>pow(2, k-1) && y<=pow(2, k-1))
            return 3*(pow(4, k-1)-1)+3 + f(k-1, pow(2, k-1)-y+1, pow(2,k-1)-(x-pow(2, k-1))+1);
    }
}

int main()
{
    unsigned short k;
    unsigned x, y;
    ifstream fin("fractal.in");
    fin>>k>>x>>y;
    fin.close();
    ofstream fout("fractal.out");
    fout<<f(k, x, y);
    fout.close();
    return 0;
}