Cod sursa(job #2490171)

Utilizator dragos99Homner Dragos dragos99 Data 9 noiembrie 2019 20:46:03
Problema Fractal Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<bits/stdc++.h>

using namespace std;
    ifstream f("fractal.in");
    ofstream g("fractal.out");

int ord[16], p[16];

void initializare()
{
    p[0] = 1;
    p[1] = 2;
    ord[1] = 3;
    for(int i = 2; i <= 15; i++){
        p[i] = 2 * p[i - 1];
        ord[i] = 4 * ord[i - 1] + 3;
    }
}

int fractal(int k, int x, int y)
{
    if(k == 0)
        return 0;
    if(x <= p[k - 1]){
        if(y <= p[k - 1])
            return fractal(k - 1, x, y);
        else
            return 3 + 3 * ord[k-1] + fractal(k - 1, 2 * p[k - 1] - y + 1, p[k - 1] - x + 1);
    }
    else{
        if(y <= p[k - 1]){
            return 1 + ord[k - 1] + fractal(k - 1, x - p[k - 1], y);
        }
        else{
            return 2 + 2 * ord[k - 1] + fractal(k - 1, x - p[k - 1], y - p[k -1]);
        }
    }
}

int main()
{
    int k, x, y;
    f>>k>>x>>y;
    initializare();
    g<<fractal(k, x, y);
    return 0;
}