Submission #969407

#TimeUsernameProblemLanguageResultExecution timeMemory
969407HasanV11010238Rack (eJOI19_rack)C++17
40 / 100
1 ms436 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
int am = 0;
ll binpow(ll a, ll b){
    ll res = 1;
    if (b == -1){
        return 0;
    }
    while (b != 0){
        if (b % 2 == 0){
            b /= 2;
            a *= a;
            if (a >= mod){
                am++;
            }
            a %= mod;
        }
        else{
            b -= 1;
            res *= a;
            if (res >= mod){
                am++;
            }
            res %= mod;
        }
    }
    return res;
}
ll f(int n, int k, int va){
    ll val = 0;
    if (n == 0){
        return val;
    }
    am = 0;
    ll po = binpow(2, n);
    if (am > 0 || k >= po / 2){
        val += binpow(2, va);
        return val + f(n - 1, k - po / 2, va + 1);
    }
    return val + f(n - 1, k, va + 1);
}
int main(){
    int n, k;
    cin>>n>>k;
    k--;
    cout<<f(n, k, 0) + 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...