Cod sursa(job #1118620)

Utilizator gapdanPopescu George gapdan Data 24 februarie 2014 12:16:10
Problema Fractal Scor 100
Compilator cpp Status done
Runda monday Marime 0.8 kb
#include<cstdio>
#include<algorithm>
#define pow(xx) (1<<(xx))
int cost(int i,int j,int k)
 {
  if(!k || (i==1 && j==1)) return 0;
  int lim=1<<(k-1);
  // stanga sus
  if(i<=lim && j<=lim)
   {
    int aux=i;
    i=j;
    j=aux;
    return cost(i,j,k-1);
   }
  // dreapta sus
  if(i<=lim && j>lim)
   {
    j-=lim;
    int aux=i;
    i=j;
    j=aux;
    i=lim-i+1;
    j=lim-j+1;
    return 3+3*(pow(2*k-2)-1)+cost(i,j,k-1);
   }
  // stanga jos
  if(i>lim && j<=lim)
   {
    i-=lim;
    return 1+(pow(2*k-2)-1)+cost(i,j,k-1);
   }
  //dreapta jos
  return 2+2*(pow(2*k-2)-1)+cost(i-lim,j-lim,k-1);
 }
int main()
 {
  freopen("fractal.in","r",stdin);
  freopen("fractal.out","w",stdout);
  int i,j,k;
  scanf("%d%d%d",&k,&j,&i);
  printf("%d\n",cost(i,j,k));
  return 0;
 }