p175.ans1
======================
8

=================
p175.cpp
======================
#include <bits/stdc++.h>

using namespace std;

template<typename T1, typename T2>
ostream& operator<<(ostream& out, const pair<T1, T2>& x) {
    return out << x.first << ' ' << x.second;
}

template<typename T1, typename T2>
istream& operator>>(istream& in, pair<T1, T2>& x) {
    return in >> x.first >> x.second;
}

template<typename T>
istream& operator>>(istream& in, vector<T>& a) {
    for(auto& x: a) {
        in >> x;
    }
    return in;
};

template<typename T>
ostream& operator<<(ostream& out, const vector<T>& a) {
    for(auto x: a) {
        out << x << ' ';
    }
    return out;
};

int n, q;

void read() {
    cin >> n >> q;
}

int rec(int len, int pos) {
    if(len == 1) {
        return 1;
    }

    int k = len / 2;
    if(pos <= k) {
        return len - k + rec(k, k - pos + 1);
    }

    return rec(len - k, len - pos + 1);
}

void solve() {
    // phi splits W into the second half (reversed) followed by the first
    // half (reversed), recursively. Mirror the same recursion to locate where
    // letter w_q lands: with k = len / 2, position pos in the first half maps
    // into the encoded second block (offset by len - k) at mirrored position
    // k - pos + 1, while a position in the second half maps into the first
    // block at mirrored position len - pos + 1. Recurse until length 1.

    cout << rec(n, q) << '\n';
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int T = 1;
    // cin >> T;
    for(int test = 1; test <= T; test++) {
        read();
        // cout << "Case #" << test << ": ";
        solve();
    }

    return 0;
}

=================
p175.in1
======================
9 4

=================
statement.txt
======================
175. Encoding
time limit per test: 0.25 sec.
memory limit per test: 4096 KB
input: standard
output: standard



Let phi(W) is the result of encoding for algorithm:
1. If the length of W is 1 then phi(W) is W;
2. Let coded word is W = w1w2...wN and K = N / 2 (rounded down);
3. phi(W) = phi(wNwN-1...wK+1) + phi(wKwK-1...w1).
For example, phi('Ok') = 'kO', phi('abcd') = 'cdab'.
Your task is to find position of letter wq in encoded word phi(W).

Input
Given integers N, q (1 <= N <= 10^9; 1<= q <= N), where N is the length of word W.

Output
Write position of letter wq in encoded word phi(W).

Sample test(s)

Input
9 4

Output
8
Author:	Michael R. Mirzayanov
Resource:	Saratov ST team Spring Contest #1
Date:	18.05.2003







=================
