Cod sursa(job #1288777)

Utilizator Mihai_BogdanDumitru Mihai Mihai_Bogdan Data 9 decembrie 2014 05:18:20
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>

int k, x, y, sol;

void fractal(int x, int y, int k) {
    int m = (1 << (k-1));

    if (k == 1) {
        if (x == 2 && y == 1) sol += 1;
        if (x == 2 && y == 2) sol += 2;
        if (x == 1 && y == 2) sol += 3;
    }
    else {
        if (x <= m && y <= m) {
            fractal(y, x, k-1);
            //fractal(x, y, k-1);
        }
        if (x > m && y <= m) {
            sol += m * m;
            fractal(x-m, y, k-1);
        }
        if (x > m && y > m) {
            sol += 2 * m * m;
            fractal(x-m, y-m, k-1);
        }
        if (x <= m && y > m) {
            sol += 3 * m * m;
            //y2 = x; x2 = 2 * m - y + 1;
            //fractal(m-y+1, x, k-1);
            fractal(2*m-y+1, m-x+1, k-1);
        }
    }
}

int main() {

    FILE *f = fopen("fractal.in", "r");
    FILE *g = fopen("fractal.out", "w");

    fscanf(f, "%d %d %d", &k, &x, &y);

    fractal(y, x, k);

    fprintf(g, "%d", sol);

    return 0;
}