Cod sursa(job #1717066)

Utilizator DjokValeriu Motroi Djok Data 14 iunie 2016 11:51:26
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<bits/stdc++.h>
using namespace std;

int k,x,y;

int Solve(int x,int y,int k) {
    if(k==1)
    {
      if(x==1 && y==1) return 0;
      if(x==1 && y==2) return 1;
      if(x==2 && y==2) return 2;
      if(x==2 && y==1) return 3;
    }

    int Y=(1<<k)-x+1;
    int X=(1<<(k-1))-y+1;

    --k;

    if(x<=(1<<k) && y<=(1<<k)) return Solve(y,x,k);

    if(x<=(1<<k) && y>(1<<k)) return (1<<(2*k))+Solve(x,y-(1<<k),k);

    if(x>(1<<k) && y<=(1<<k)) return 3*(1<<(2*k))+Solve(X,Y,k);

    return 2*(1<<(2*k))+Solve(x-(1<<k),y-(1<<k),k);
}

int main()
{
  ifstream cin("fractal.in");
  ofstream cout("fractal.out");

  ios_base::sync_with_stdio(0);

  cin>>k>>x>>y;
  cout<<Solve(x,y,k)<<'\n';

 return 0;
}