Pagini recente » Cod sursa (job #1766407) | Cod sursa (job #2508213) | Cod sursa (job #2051365) | Cod sursa (job #2909132) | Cod sursa (job #2644316)
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace std;
using namespace __gnu_pbds;
typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
ifstream fin("fractal.in");
ofstream fout("fractal.out");
ll k,col,lin,nrmuchii[20];
ll val(int nivel,int linie,int coloana)
{
if(nivel==1)
{
if(linie==1)
{
if(coloana==1)
return 0;
if(coloana==2)
return 3;
}
if(linie==2)
{
if(coloana==1)
return 1;
if(coloana==2)
return 2;
}
}
if(linie>(1<<(nivel-1)))
{
if(coloana>(1<<(nivel-1)))
return 2*nrmuchii[nivel-1]+2+val(nivel-1,linie-(1<<(nivel-1)),coloana-(1<<(nivel-1)));
else
return nrmuchii[nivel-1]+1+val(nivel-1,linie-(1<<(nivel-1)),coloana);
}
else
{
if(coloana<=(1<<(nivel-1)))
return val(nivel-1,coloana,linie);
else
return 3*nrmuchii[nivel-1]+3+val(nivel-1,(1<<nivel)-coloana+1,(1<<nivel-1)-linie+1);
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
nrmuchii[1]=3;
for(int i=2;i<=15;i++)
nrmuchii[i]=4*nrmuchii[i-1]+3;
fin>>k>>col>>lin;
fout<<val(k,lin,col);
return 0;
}