Cod sursa(job #1874916)

Utilizator antanaAntonia Boca antana Data 10 februarie 2017 16:04:17
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>

using namespace std;

int k;
int ans = 0;

void fractal(int x, int y, int level)
{
    if(level == 0)
        return;

    int middle = (1<<(level-1));

    if(x <= middle && y <= middle)
        fractal(y, x, level-1);
    if(x >  middle && y <= middle)
    {
        ans += middle*middle;
        fractal(x - middle, y, level-1);
    }
    if(x >  middle && y >  middle)
    {
        ans += 2*middle*middle;
        fractal(x - middle, y - middle, level-1);
    }
    if(x <= middle && y >  middle)
    {
        ans += 3*middle*middle;
        fractal(2*middle - y + 1, middle - x + 1, level - 1);
    }
}


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

    int x, y;
    scanf("%d%d%d", &k, &y, &x);

    fractal(x, y, k);

    printf("%d", ans);

    return 0;
}