Cod sursa(job #3341455)

Utilizator Denis2Baran Denis-Constantin Denis2 Data 19 februarie 2026 17:04:04
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

long long solve(int k, long long x, long long y) {
    if (k == 0) return 0;

    long long half = 1LL << (k - 1);
    long long block = 1LL << (2 * (k - 1));

    // determinăm cadranul
    if (x <= half && y <= half) {
        // cadranul 1 – rotit
        return solve(k - 1, y, x);
    }
    if (x <= half && y > half) {
        // cadranul 2
        return block + solve(k - 1, x, y - half);
    }
    if (x > half && y > half) {
        // cadranul 3
        return 2 * block + solve(k - 1, x - half, y - half);
    }
    // cadranul 4 – rotit
    return 3 * block + solve(k - 1, half - y + 1, 2 * half - x + 1);
}

int main() {
    ifstream fin("fractal.in");
    ofstream fout("fractal.out");

    int K;
    long long x, y;
    fin >> K >> x >> y;

    fout << solve(K, x, y);
    return 0;
}