Cod sursa(job #2810203)

Utilizator divadddDavid Curca divaddd Data 28 noiembrie 2021 20:45:44
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
long long n,k,x,y;

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

/**
 _   _
 _| |_
|  _  |
|_| |_|
**/

void afla(long long k, long long x, long long y, long long val){
    /**
    1 2 devine 1 4
    3 4        2 3
    **/
    if(k != 0){
        int l = 1<<(k-1); /// <=> l = ...; l /= 2;
        if(x <= l && y > l){
            /// cadranul 4
            val += 3*l*l;
            y = 2*l-y+1;
            x = l-x+1;
            afla(k-1, y, x, val);
        }else if(x > l && y <= l){
            /// cadranul 2
            val += l*l;
            x -= l;
            afla(k-1, x, y, val);
        }else if(x > l && y > l){
            /// cadranul 3
            val += 2*l*l;
            y -= l;
            x -= l;
            afla(k-1, x, y, val);
        }else{
            afla(k-1, y, x, val);
        }
    }else{
        fout << val << "\n";
    }
}

int main()
{
    fin >> k >> y >> x;
    if(k == x && k == 1 && y == x){
        fout << 0;
        return 0;
    }
    afla(k, x, y, 0);
    return 0;
}