Cod sursa(job #244846)

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


int kk,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){
kk=(k>>1);

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

  return ;
  }


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

     aux=x; x=y;
     y=(kk-aux+1);

     y=kk-y+1;

     parc(kk,x,y);
     }

     else{
     //patratu 2;
     sol+=3*(kk*kk);
     y-=kk;

     aux=y;
     y=x;
     x=kk - aux +1;

     y=kk-y+1;

     parc(kk,x,y);
     }

  }


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

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


  }

}



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;
}