Cod sursa(job #1874900)

Utilizator antanaAntonia Boca antana Data 10 februarie 2017 15:47:04
Problema Fractal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>

using namespace std;

int k, x, y;
long long ans = 0;

void fractal(int startx, int starty, int level)
{
    if(level == 0)
        return;

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

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


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

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

    fractal(1, 1, k);

    printf("%d", ans);

    return 0;
}