Pagini recente » Cod sursa (job #2795644) | Cod sursa (job #3342313) | Cod sursa (job #3359229) | Cod sursa (job #2795649) | Cod sursa (job #3358859)
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int n,x,y;
int ans(int lat)
{
int mij = lat/2;
if(lat == 1) return 0;
if(x <= mij && y <= mij)
{
swap(x,y);
return ans(lat/2);
}
else if(x > mij && y <= mij)
{
x-=mij; // in rest nu se schimba
return (lat/2)*(lat/2) + ans(lat/2);
}
else if(x > mij && y > mij)
{
y-=mij;
x-=mij;
return 2 * (lat/2)*(lat/2) + ans(lat/2);
}
else
{
y = lat - y + 1;
x = mij - x + 1;
swap(x,y);
return 3 * (lat/2)*(lat/2) + ans(lat/2);
}
}
int main()
{
// recursiv se poate face ca pozitia in care sfert se afla nr recursiv
// ok deci nu putem face cu stocare clar
f >> n >> y >> x;
g << ans((1 << n));
f.close();
g.close();
return 0;
}