Cod sursa(job #2148001)

Utilizator robx12lnLinca Robert robx12ln Data 1 martie 2018 14:05:52
Problema Fractal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<fstream>
using namespace std;
ifstream fin("fractal.in");
ofstream fout("fractal.out");
int K, X, Y;
long long Sol = 0;
void solve( int K, int X, int Y ){
    int N = (1<<K);
    if( K == 1 ){
        if( X == 2 && Y == 1 )
            Sol++;
        if( X == 2 && Y == 2 )
            Sol += 2;
        if( X == 1 && Y == 2 )
            Sol += 3;
    }else{
        if( X <= N / 2 && Y <= N / 2 ){
            int X1 = Y;
            int Y1 = N / 2 - X + 1;
            solve( K - 1, X1, N / 2 - Y1 + 1 );
            return;
        }
        if( X > N / 2 && Y <= N / 2 ){
            Sol += (1<<K);
            solve( K - 1, X - N / 2, Y );
            return;
        }
        if( X > N / 2 && Y > N / 2 ){
            Sol += 2 * (1<<K);
            solve( K - 1, X - N / 2, Y - N / 2 );
            return;
        }
        if( X <= N /2 && Y > N / 2 ){
            Sol += 3 * (1<<K);
            Y -= N / 2;
            int X1 = N / 2 - Y + 1;
            int Y1 = X;
            solve( K - 1, X1, N / 2 - Y1 + 1 );
            return;
        }
    }
    return;
}
int main(){
    fin >> K >> Y >> X;
    solve( K, X, Y );
    fout << Sol << "\n";
    return 0;
}