Cod sursa(job #1483086)

Utilizator din99danyMatei Daniel din99dany Data 8 septembrie 2015 17:55:03
Problema Fractal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
using namespace std;

int x, y, t, d;

int rec( int k, int x1, int y1, int x2, int y2 ){


    if( k == 0  ) return 0;
    else{

        k--;

        d = 1 << k;

        int mid_x = ( x1 + x2 ) / 2;
        int mid_y = ( y1 + y2 ) / 2;

        if( x <= mid_x ){
            if( y <= mid_y ){
                return rec( k, x1, y1, mid_x, mid_y );
            }
            else{
                return  d * d *  3 + rec( k, x1, mid_y+1, mid_x, y2 );
            }
        }
        if( x >= mid_x + 1 ){
            if( y <= mid_y ){
                return d * d + rec( k, mid_x+1, y1, x2, mid_y );
            }
            if( y >= mid_y + 1 ){
                return d * 2 * d + rec( k, mid_x+1, mid_y+1, x2, y2 );
            }
        }


    }



}




int main()
{

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

    int d, s, k;

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


    printf("%d",rec( k, 1, 1,(1<<k),(1<<k) ));

    return 0;
}