Pagini recente » Profil AndreiTudorSpiru | Cod sursa (job #2488047)
#include <fstream>
using namespace std;
ifstream fin("fractal.in");
ofstream fout("fractal.out");
long long fractal(int dim,int lin,int col)
{
//fout<<lin<<" "<<col<<"\n";
if(dim==2)
{
if(lin%2==1 && col%2==1) return 1;
if(lin%2==0 && col%2==1) return 2;
if(lin%2==0 && col%2==0) return 3;
return 4;
}
int val=dim*dim/4;
///stanga jos
if(lin>dim/2 && col<=dim/2)
{
lin=lin;
col=col;
return val+fractal(dim/2,lin,col);
}
///dreapta jos
if(lin>dim/2 && col>dim/2)
{
lin=lin-dim/2;
col=col-dim/2;
return 2*val+fractal(dim/2,lin,col);
}
///stanga sus
if(lin<=dim/2 && col<=dim/2)
{
swap(lin,col);
return fractal(dim/2,lin,col);
}
///dreapta sus
lin=dim+1-lin;
col=dim/2+1-col;
return 3*val+fractal(dim/2,lin,col);
}
int main()
{
int k,lin,col;
fin>>k;
fin>>col>>lin;
int dim=(1<<k);
fout<<fractal(dim,lin,col)-1;
return 0;
}