Cod sursa(job #2644315)

Utilizator hhhhhhhAndrei Boaca hhhhhhh Data 24 august 2020 11:30:20
Problema Fractal Scor 10
Compilator cpp-64 Status done
Runda prbd2 Marime 1.56 kb
#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;
ll nrmuchii(int niv)
{
    return (1<<niv+1)-1;
}
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))+1,coloana-(1<<(nivel-1))+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);
    fin>>k>>col>>lin;
    fout<<val(k,lin,col);
    return 0;
}