Submission #45894804


Source Code Expand

#include <iostream>
#include <vector>
#include <string>
#include <queue>
#include <map>
#include <set>
#include <iomanip>
#include <array>
#include <algorithm>
#include <random>
#include <chrono>
#include <assert.h>
#include <cstring>
#include <stack>
 
using namespace std;
 
// #defines
#define mkuni(v) sort(all(v)); v.erase(unique(all(v)), v.end())
#define all(v) v.begin(), v.end()
#define endl '\n'
#define ll long long
#define vint vector<int>
#define vll vector<ll>
#define vvint vector<vector<int>>
#define watch(x) dbg((#x), " : ", (x), '\n')
// #define watch(x) cerr << #x << " : " << (x) << '\n';
 
#ifndef ONLINE_JUDGE
#define DEBUG true
#endif
 
 
// ----------------------------------------------
// print statements
// ----------------------------------------------
template<typename T>
istream& operator>>(istream &in, vector<T> &v) {
    for (auto &x : v) in >> x;
    return in;
}
template<typename T>
ostream& operator<<(ostream &out, vector<T> &v) {
    out << "{";
    for (auto &x : v) out << x << " ";
    out << "}\n";
    return out;
}
template<typename Iterable>
void prnv(const Iterable& iterable, ostream&out = cout) {
    if (iterable.begin() == iterable.end()) {
        out << endl;
        return;
    }
    auto x = iterable.begin();
    out << *x;
    for (++x; x != iterable.end(); ++x) out << ' ' << *x;
    out << endl;
}
void prn(char en = '\n') {
    cout << en;
}
template<typename T, typename... Args>
void prn(T x, Args... args) {
    cout << x << " ";
    prn(args...);
}
void dbg() {
    cerr << endl;
}
#ifdef DEBUG
template<typename T, typename... Args>
void dbg(T x, Args... args) {
    cerr << x << " ";
    dbg(args...);
}
#else
template<typename T, typename... Args>
void dbg(T x, Args... args) {}
#endif
 
// ----------------------------------------------
 
/* ----------------------------------------------
 * Juvenile shortcuts
 * ---------------------------------------------- */
template<typename T> void setmin(T &a) {}
template<typename T, typename... Args> void setmin(T &a, T b, Args... args) {a = (a > b ? b : a); setmin(a, args...);}
template<typename T> void setmax(T &a) {}
template<typename T, typename... Args> void setmax(T &a, T b, Args... args) {a = (a < b ? b : a); setmax(a, args...);}
// ----------------------------------------------
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define rand(l, r) uniform_int_distribution<ll>(l, r)(rng)
 
// const int MOD = (int)1e9 + 7;
// const int MOD = 998244353;
const int oo = (int)1e9;
const int N = (int)2500 + 5;
const int SZ = 26;

const int TSZ = (int)1e7;

// #define DEBUG false

ll getchld(ll n, ll N, ll k) {
    if (k < 0) return 0;
    if (n > N) return 0;

    ll mn = n, mx = n;
    for (ll j=0;j<=k;++j) {
        if (j == k) {
            return mx - mn + 1;
        }

        mn <<= 1;
        mx <<= 1; mx |= 1;
        mx = min(mx, N);
        if (mn > N) {
            return 0;
        }
    }
    return 0;
}

ll getdst(ll n, ll N, ll k) {
    ll ans = getchld(n, N, k);
    if (n > 1) {
        ans += getdst(n>>1, N, k-1);
        ans -= getchld(n, N, k-2);
    }
    return ans;
}

void solve() {
    ll n, x, k;
    cin >> n >> x >> k;
    prn(getdst(x, n, k));   
}
 
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    cout << fixed << setprecision(10);
    int T = 1;
    cin >> T;
    while (T--) {
        solve();
    }
    return 0;
}

Submission Info

Submission Time
Task E - Complete Binary Tree
User srikkanthr
Language C++ 23 (Clang 16.0.6)
Score 450
Code Size 3574 Byte
Status AC
Exec Time 125 ms
Memory 3560 KiB

Compile Error

./Main.cpp:79:12: warning: unused parameter 'x' [-Wunused-parameter]
void dbg(T x, Args... args) {}
           ^
./Main.cpp:79:23: warning: unused parameter 'args' [-Wunused-parameter]
void dbg(T x, Args... args) {}
                      ^
./Main.cpp:87:37: warning: unused parameter 'a' [-Wunused-parameter]
template<typename T> void setmin(T &a) {}
                                    ^
./Main.cpp:89:37: warning: unused parameter 'a' [-Wunused-parameter]
template<typename T> void setmax(T &a) {}
                                    ^
./Main.cpp:98:11: warning: unused variable 'oo' [-Wunused-const-variable]
const int oo = (int)1e9;
          ^
./Main.cpp:99:11: warning: unused variable 'N' [-Wunused-const-variable]
const int N = (int)2500 + 5;
          ^
./Main.cpp:100:11: warning: unused variable 'SZ' [-Wunused-const-variable]
const int SZ = 26;
          ^
./Main.cpp:102:11: warning: unused variable 'TSZ' [-Wunused-const-variable]
const int TSZ = (int)1e7;
          ^
8 warnings generated.

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 2
AC × 8
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_small_00.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3560 KiB
00_sample_01.txt AC 1 ms 3456 KiB
01_small_00.txt AC 7 ms 3468 KiB
02_large_00.txt AC 122 ms 3552 KiB
02_large_01.txt AC 122 ms 3460 KiB
02_large_02.txt AC 121 ms 3480 KiB
02_large_03.txt AC 122 ms 3424 KiB
02_large_04.txt AC 125 ms 3468 KiB