Cod sursa(job #2490780)

Utilizator alexnigaNiga Alexandru alexniga Data 10 noiembrie 2019 21:37:41
Problema Fractal Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("fractal.in");
ofstream g("fractal.out");

long long k, x, y;

long long DivideEtImpera(long long matSize, long long lin, long long col)
{
    long long mij = matSize / 2;

    if (matSize == 1)
        return 0;

    if (lin <= mij && col <= mij)
        return DivideEtImpera(mij, col, lin);

    if (lin <= mij && col > mij)
    {
        long long newCol = col - mij;
        return mij * mij + DivideEtImpera(mij, lin, newCol);
    }

    if (lin > mij && col <= mij)
    {
        long long newLin =  mij - col + 1;
        long long newCol =  mij * 2 - lin + 1;
        return mij * mij * 3 + DivideEtImpera(mij, newLin, newCol);
    }

    if (lin > mij && col > mij)
    {
        long long newLin = lin - mij;
        long long newCol = col - mij;
        return mij * mij * 2 + DivideEtImpera(mij, newLin, newCol);
    }

}

int main()
{
    //f >> k >> x >> y;
    cin >> k >> x >> y;

    long long matSize = 1;

    for (int i = 1; i <= k; i++)
        matSize *= 2;

    cout << DivideEtImpera(matSize, x, y) << "\n";
    //g << DivideEtImpera(matSize, x, y) << "\n";

    return 0;
}