Cod sursa(job #1199952)

Utilizator hrazvanHarsan Razvan hrazvan Data 21 iunie 2014 12:40:18
Problema Fractal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>

int rezolv( int k, int a, int b ){
  int aux, quad;
  if( a <= ( 1 << ( k - 1 ) ) && b <= ( 1 << ( k - 1 ) ) )  quad = 0;
  else  if( b <= ( 1 << ( k - 1 ) ) )                       quad = 1;
  else  if( a <= ( 1 << ( k - 1 ) ) )                       quad = 3;
  else                                                      quad = 2;
  if ( quad == 0 ){
    aux = a;  a = b;  b = aux;
  }
  else if( quad == 1 ){
    a -= ( 1 << ( k - 1 ) );
  }
  else if( quad == 2 ){
    a -= ( 1 << ( k - 1 ) );
    b -= ( 1 << ( k - 1 ) );
  }
  else{
    aux = a;  a = ( 1 << k ) + 1 - b;  b = ( 1 << ( k - 1 ) ) + 1 - aux;
  }
  int rez = quad * ( 1 << ( 2 * k - 2 ) );
  if( k != 1 ){
    rez += rezolv( k - 1, a, b );
  }
  return rez;
}

int main(){
  FILE *in = fopen ( "fractal.in", "r" );
  int k, a, b;
  fscanf ( in, "%d%d%d", &k, &b, &a );
  fclose( in );
  FILE *out = fopen ( "fractal.out" ,"w" );
  fprintf ( out, "%d", rezolv( k, a, b ) );
  fclose ( in );
  return 0;
}