Cod sursa(job #2036460)

Utilizator VladG26Ene Vlad-Mihai VladG26 Data 10 octombrie 2017 18:39:19
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <cstdio>
using namespace std;
int getCadran(int n,int x,int y)
{
    if(x<=n/2)
        {
            if(y<=n/2)
                return 1;
            if(y>n/2)
                return 2;
        }
    else
    {
        if(y<=n/2)
                return 4;
        if(y>n/2)
                return 3;
    }
}
int nrPasi(int n,int x,int y)
{
    int nrCadran=getCadran(n,x,y);
    if(n==2)
    {
        return nrCadran;
    }
    switch(nrCadran)
    {
        case 1: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,y,x);
        case 2: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,x,y-n/2);
        case 3: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,x-n/2,y-n/2);
        case 4: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,n-y+1-n/2,n-x+1);
    }
}
int main()
{
    freopen("fractal.in","r",stdin);
    freopen("fractal.out","w",stdout);
    int k,x,y;
    scanf("%d%d%d",&k,&x,&y);
    printf("%d",nrPasi(1<<k,x,y)-1);
    return 0;
}