Cod sursa(job #287815)

Utilizator DjSefuWrong name DjSefu Data 25 martie 2009 10:52:15
Problema Fractal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream>
std::ifstream f("fractal.in");
std::ofstream g("fractal.out");
long long n,i,j,x,y,d,k;
long long cadran(long long &x,long long &y,long long &k)
{ if(x>1<<k-1&&y>1<<k-1) { x-=1<<k-1;
                           y-=1<<k-1;
                           return 3;
                           }  
  if(x>1<<k-1) { x-=1<<k-1;
                 y-=1<<k-1;
                 return 2;
                 }
  if(y>1<<k-1) { long long aux=x;
                 x=(1<<k)-y+1;
                 y=aux;
                 return 4;
                 }
  long long aux=y;
  y=(1<<k-1)-x+1;
  x=aux;  
  return 1;
}
long long rez(long long &x,long long &y,long long k)
{ if(k==1) { if(x==1&&y==1) return 0;
             if(x==1) return 3;
             if(y==1) return 1;
             return 2;
             }  
  long long c=cadran(x,y,k)-1;
  long long d=c*(1<<(k+k-2));
  if(c==1||c==2) return d+rez(x,y,k-1);
  return d+(1<<k+k-2)-rez(x,y,k-1)-1;
} 
int main()
{ f>>k>>y>>x;
  g<<rez(x,y,k)<<"\n";
  f.close();
  g.close();
  return 0;
}