Cod sursa(job #197115)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 1 iulie 2008 16:37:25
Problema Fractal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
int k,x,y;
int curba(int k,int x,int y){
  if (k==1) {
    if (x==1 && y==1) return 1;
    if (x==1 && y==2) return 2;
    if (x==2 && y==2) return 3;
    if (x==2 && y==1) return 4;
     }
  int w=1<<(2*(k-1)),v=1<<(k-1);
  if ( x<=(1<<(k-1)) && y<=(1<<(k-1)) )
     return w+1-curba(k-1,v+1-y,x);
  if ( x<=(1<<(k-1)) && y>(1<<(k-1)) )
     return w+curba(k-1,x,y-v);
  if ( x>(1<<(k-1)) && y>(1<<(k-1)) )
     return 2*w+curba(k-1,x-v,y-v);
  return 4*w+1-curba(k-1,y,2*v+1-x);
}
int main(){
    freopen("fractal.in","r",stdin);
    freopen("fractal.out","w",stdout);
    scanf("%d %d %d",&k,&x,&y);
    printf("%d",curba(k,x,y)-1);
    return 0;
}