func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, k;   long long calc(long long n, long long k) {     map<long long, long long> l, r;     l.clear();     r.clear();     long long cnt[2];     cnt[0] = cnt[1] = 0;     if (k == 1) return n / 2;     k--;     l[n / 2] = 1;     r[n / 2 + (n % 2)] = 1;     while (1) {       if ((*l.rbegin()).first / 2 >= (*r.rbegin()).first / 2) {         if ((*l.rbegin()).second >= k) return calc(n / 2, k + cnt[0]);         k -= (*l.rbegin()).second;         cnt[0] += (*l.rbegin()).second;         l[(*l.rbegin()).first / 2] += (*l.rbegin()).second;         l[(*l.rbegin()).first / 2 + ((*l.rbegin()).first % 2)] +=             (*l.rbegin()).second;         l.erase((*l.rbegin()).first);       } else {         if ((*r.rbegin()).second >= k)           return calc(n / 2 + (n % 2), k + cnt[1]) + n / 2;         k -= (*r.rbegin()).second;         cnt[1] += (*r.rbegin()).second;         r[(*r.rbegin()).first / 2] += (*r.rbegin()).second;         r[(*r.rbegin()).first / 2 + ((*r.rbegin()).first % 2)] +=             (*r.rbegin()).second;         r.erase((*r.rbegin()).first);       }     }   }   int main() {     cin >> n >> k;     if (k == 1) {       cout << 1;       return 0;     }     if (k == 2) {       cout << n;       return 0;     }     cout << 1 + calc(n - 1, k - 2);     return 0;   }   