Cod sursa(job #3250137)

Utilizator Victor5539Tanase Victor Victor5539 Data 19 octombrie 2024 13:26:12
Problema Fractal Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>

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



int n,lin,col,p;
pair <int,int> sol;

pair <int,int> labirint(int pt)
{
    int latura=(1<<(pt-1)),raport;
    raport=(p-1)/(latura*latura);
    p=p-raport*latura*latura;

    if (raport==0)
    {
        if (pt==1)
        return{1,1};

        pair<int,int> b=labirint(pt-1);
        return {b.second, b.first};
    }

    if (raport==1)
    {
        if (pt==1)
        return {2,1};

        pair<int,int> b=labirint(pt-1);
        return {latura+b.first,b.second};
    }

    if (raport==2)
    {
        if (pt==1)
        return {2,2};

        pair<int,int> b=labirint(pt-1);
        return {latura+b.first,latura+b.second};
    }

    if (raport==3)
    {
        if (pt==1)
        return {1,2};

        pair<int,int> b=labirint(pt-1);
        return {latura-b.second+1,2*latura-b.first+1};
    }
}
int main()
{
    fin>>n>>lin>>col;
    swap(lin,col);
 //   cout<<n<<" "<<lin<<" "<<col<<endl;

    for (int i=1; i<=(1<<(2*n)); i++)
    {
        p=i;
        sol=labirint(n);


        if (sol.first==lin && sol.second==col)
        {
            fout<<i-1;
            return 0;
        }
    }


    return 0;
}