Cod sursa(job #2045111)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 21 octombrie 2017 20:37:20
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include<iostream>
using namespace std;
int n,x,y,s=0;
int pow(int p,int k)
{
    int nr=1;
    while(k)
        nr*=p,k--;
    return nr;
}
void rez(int n)
{
    if(n>1)
    {n--;
    int lin,col,p2n=pow(2,n),p4n=pow(4,n);
    if(x<=p2n&&y<=p2n)
    {
        lin=y;
        col=p2n-x+1;
        col=p2n-col+1;
        x=lin;
        y=col;
        rez(n);
    }
    if(x>p2n&&y<=p2n)
    {
        s+=p4n;
        x-=p2n;
        rez(n);
    }
    if(x>p2n&&y>p2n)
    {
        s+=2*p4n;
        y-=p2n;
        x-=p2n;
        rez(n);
    }
    if(x<=p2n&&y>p2n)
    {
        y-=p2n;
        col=x;
        lin=p2n-y+1;
        col=p2n-col+1;
        x=lin;
        y=col;
        s+=3*p4n;
        rez(n);
    }
    }
    else
    {
        if(x==1&&y==2)
           s+=3;
        if(x==2&&y==1)
            s++;
        if(x==2&&y==2)
            s+=2;

     }
}
int main()
{
    freopen("fractal.in","r",stdin);
    freopen("fractal.out","w",stdout);
    scanf("%d%d%d",&n,&y,&x);
    rez(n);
    printf("%d",s);
    return 0;
}