Cod sursa(job #2625241)

Utilizator Robert.BrindeaBrindea Robert Robert.Brindea Data 5 iunie 2020 20:21:49
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("fractal.in");
ofstream fout ("fractal.out");

int k, X, Y;

long long eval(int ordin, int x, int y)
{
    int lat = 1<<ordin;
    if(ordin == 1)
    {
        bool ok = y==2;
        return 2*ok + (ok == 0 ? x-1 : 2-x);
    }
    if(x <= lat/2)
    {
        if(y <= lat/2)
            return eval(ordin-1, y, x);
        else
            return 3*(lat*lat/4) + eval(ordin-1, lat+1-y, lat/2+1-x);
    }
    else
    {
        if(y <= lat/2)
            return (lat*lat/4) + eval(ordin-1, x-lat/2, y);
        else
            return 2*(lat*lat/4) + eval(ordin-1, x-lat/2, y-lat/2);
    }
}
int main()
{
    fin >> k >> Y >> X;
    fout << eval(k, X, Y);
    return 0;
}