Cod sursa(job #2889859)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 13 aprilie 2022 16:16:06
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
//Ilie Dumitru
#include<cstdio>
typedef long long int ll;
const int NMAX=3505;
const ll MOD=1000000007;

FILE* f=fopen("fractal.in", "r"), *g=fopen("fractal.out", "w");

int steps(int k, int x, int y)
{
    if(!k)
        return 0;
    int area=((x<(1<<(k-1)))<<1)|(y<(1<<(k-1)));
    switch(area)
    {
    case 0:
        return 2*(1<<(k*2-2))+steps(k-1, x-(1<<(k-1)), y-(1<<(k-1)));
    case 1:
        return 3*(1<<(k*2-2))+steps(k-1, (1<<(k-1))-1-y, (1<<k)-1-x);
    case 2:
        return 1*(1<<(k*2-2))+steps(k-1, x, y-(1<<(k-1)));
    case 3:
        return steps(k-1, y, x);
    }
    return 0;
}

int main()
{
    int K, x, y;
    fscanf(f, "%d%d%d", &K, &x, &y);
    --x;
    --y;
    fprintf(g, "%d", steps(K, x, y));
    fclose(f);
    fclose(g);
    return 0;
}