Cod sursa(job #2225374)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 26 iulie 2018 20:20:27
Problema Fractal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("fractal.in");
ofstream fout("fractal.out");

int recursiv(int k,int x,int y)
{
    if(k==0) return 0;
    if(k==1)
    {
        if(x==1 and y==1) return 0;
        if(x==1 and y==2) return 1;
        if(x==2 and y==2) return 2;
        if(x==2 and y==1) return 3;
    }
    int p=pow(2,(k-1)); /// 2^(k-1)
    if(x<=p and y<=p)
    {
        return recursiv(k-1,y,x);
        /// ne aflam in patratul din stanga sus;
    }
    if(x<=p and y>p)
    {
        return p*p+recursiv(k-1,x,y-p); ///  p*p ca sa trecem de primul patrat
        /// ne aflam in patratul din stanga jos;
    }
    if(x>p and y>p)
    {
        return 2*p*p + recursiv(k-1,x-p,y-p); /// 2*p*p ca sa trecem de primele 2 patrate;
        /// ne aflam in patratul din dreapta jos;
    }
    if(x>p and y<=p)
    {
        return 3*p*p + recursiv(k-1,p-y+1,2*p-x+1); /// 3*p*p ca sa trecem de primele 3 patrate;
        /// ne aflam in patratul din dreapta sus;
    }
    /// cazul 2=3;
    /// cazul 1 inversul cazului 4;
    return 0;
}

int main()
{
    int k,x,y;
    fin >> k >> x >> y;
    fout << recursiv(k,x,y);
    return 0;
}