Cod sursa(job #244844)

Utilizator katakunaCazacu Alexandru katakuna Data 16 ianuarie 2009 08:51:14
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>


int aux,k,x,y,sol,a[3][3]={{0,0,0},{0,0,3},{0,1,2}};

void parc(int k,int x,int y){

  if(k == 2){
  sol+=a[x][y];

  return ;
  }


  if(x<=k>>1){
  //prima jumatate
     if(y<=k>>1){
     //patratu 1;
     //parc((k>>1),y,((k>>1)-x+1) );

     aux=x;
     x=y;
     y=((k>>1)-aux+1);

     y=(k>>1)-y+1;

     parc((k>>1),x,y);
     }

     else{
     //patratu 2;
     sol+=3*((k>>1)*(k>>1));
     y-=(k>>1);

     aux=y;
     y=x;
     x=((k>>1) - aux +1);

     y=(k>>1)-y+1;

     parc((k>>1),x,y);
     }

  }


  else{
  //a doua juamtate
     if(y<=k>>1){
     //patratu 3;     e bine
     sol+=((k>>1)*(k>>1));
     parc(k>>1,(x-(k>>1)),y);
     }

     else{
     //patratu 4;
     sol+=2*((k>>1)*(k>>1));
     parc( k>>1,(x-(k>>1)),(y-(k>>1)) );
     }


  }

}



int main(){


FILE *f=fopen("fractal.in","r");
fscanf(f,"%d %d %d",&k,&y,&x);
fclose(f);

parc((1<<k),x,y);

FILE *g=fopen("fractal.out","w");
fprintf(g,"%d",sol);
fclose(g);

return 0;
}