Cod sursa(job #2146215)

Utilizator gabib97Gabriel Boroghina gabib97 Data 27 februarie 2018 21:11:08
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

int k, x, y;

int length(int k, int x, int y)
{
    if (k == 1)
    {
        if (x == 1 && y == 1) return 0;
        else if (x == 1 && y == 2) return 1;
        else if (x == 2 && y == 2) return 2;
        return 3;
    }
    else
    {
        k--;
        int n = 1 << k;
        if (x <= n) 
        {
            if (y <= n) return length(k, y, x);
            else return (1 << (2*k)) + length(k, x, y - n);
        }
        else
        {
            if (y <= n) return 3 * (1 << (2*k)) + length(k, n - y + 1, 2*n - x + 1);
            else return 2 * (1 << (2*k)) + length(k, x - n, y - n);
        }
    }
}

int main()
{
    freopen ("fractal.in", "r", stdin);
    freopen ("fractal.out", "w", stdout);

    scanf("%i%i%i", &k, &x, &y);
    
    printf("%i", length(k, x, y)); 
    return 0;
}