Cod sursa(job #2631343)

Utilizator Simon2712Simon Slanina Simon2712 Data 30 iunie 2020 07:57:06
Problema Fractal Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>

using namespace std;
ifstream cin("fractal.in");
ofstream cout("fractal.out");
unsigned long long rez,vp[15];
void schimb(int &a,int &b)
{
    int c=a;
    a=b;
    b=c;
}
void divide(int k,int l,int x,int y)
{
    if(l!=1){
        if(x<=(l/2) && y<=(l/2))
        {
            k--;
            l/=2;
            schimb(x,y);
        }
        else
        if(x<=(l/2))
        {
            rez+=vp[k-1]*3+3;
            y-=l/2;
            k--;
            l/=2;
            int cx;
            cx=x;
            x=y;
            y=l+1-cx;
        }
        else
        if(y<=(l/2))
        {
            rez+=vp[k-1]+1;
            x-=l/2;
            k--;
            l/=2;
        }
        else
        {
            rez+=vp[k-1]*2+2;
            x-=l/2;
            y-=l/2;
            k--;
            l/=2;
        }
        divide(k,l,x,y);
    }
}
int main()
{
    int k,x,y,i,put=1;
    cin>>k>>y>>x;
    vp[1]=3;
    for(i=2;i<=14;i++)
    {
        vp[i]=vp[i-1]*4+3;
    }
    for(i=1;i<=k;i++)
        put*=2;
    divide(k,put,x,y);
    cout<<rez+1;
    return 0;
}