Cod sursa(job #2915763)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 24 iulie 2022 21:44:09
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

using namespace std;

int k, x, y;

int divide(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;
        }
        if (x == 2 && y == 1) {
            return 3;
        }
    }
    if (x <= (1 << (k - 1)) && y <= (1 << (k - 1))) {
        return divide(k - 1, y, x);
    } else if (x <= (1 << (k - 1)) && y > (1 << (k - 1))) {
        return (1 << (2 * (k - 1))) + divide(k - 1, x, y - (1 << (k - 1)));
    } else if (x > (1 << (k - 1)) && y > (1 << (k - 1))) {
        return 2 * (1 << (2 * (k - 1))) + divide(k - 1, x - (1 << (k - 1)), y - (1 << (k - 1)));
    } else if (x > (1 << (k - 1)) && y <= (1 << (k - 1))) {
       return 3 * (1 << (2 * (k - 1))) + divide(k - 1, (1 << (k - 1)) - y + 1, (1 << k) - x + 1);
    }
}

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