Cod sursa(job #2728555)

Utilizator draghici.vlad18Vlad Matei Draghici draghici.vlad18 Data 23 martie 2021 13:43:59
Problema Fractal Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <math.h>

using namespace std;

ifstream inputFile ("fractal.in");
ofstream outputFile ("fractal.out");

int hilbert(int k, int x, int y)
{
    if(k == 1)
    {
        if((x == 1) && (y == 1))
            return 0;
        if((x == 1) && (y == 2))
            return 1;
        if((x == 2) && (y == 2))
            return 2;

        return 3;
    }

    int sum = 0;
    int half = pow(2, k - 1);
    int hilbert_sum = pow(4, k - 1) - 1;

    if(x <= half)
    {
        if(y <= half)
            return hilbert(k - 1, y, x);
        else
            return 1 + hilbert_sum + hilbert(k - 1, x, y - half);
    }
    else
    {
        if(y > half)
            return 2 + 2 * hilbert_sum + hilbert(k - 1, x - half, y - half);
        else
            return 3 + 3 * hilbert_sum + hilbert(k - 1, x - half, y);
    }
}

int main()
{
    int k, x, y;
    inputFile >> k >> x >> y;
    outputFile << hilbert(k, x, y);

    return 0;
}