Cod sursa(job #59512)

Utilizator crawlerPuni Andrei Paul crawler Data 9 mai 2007 16:49:10
Problema Fractal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

#define pow(xx) (1<<(xx))

int cost(int i,int j,int k)
 {
//  printf("intru %d %d %d\n",i,j,k);
  
  if(!k || (i==1 && j==1))
   return 0;
  int lim = 1<<(k-1);
  // stanga sus
  if(i<=lim && j<=lim)
   return cost(i,j,k-1);
  // dreapta sus
  if(i<=lim && j>lim)
   {
    j -= lim;
    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,&i,&j);

  printf("%d\n",cost(i,j,k));

  return 0;
 }