codejam 2017 qualification bathroom stalls

Problem

Here.

Code in C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int () {
int T;
cin >> T;
FOR(kase, 0, T){
cout << "Case #" << kase + 1 << ": ";
ll n, k;
cin >> n >> k;
cerr << kase << " " << n << " " << k << endl;
map<ll, ll> s;
s[n] = 1LL;
while(k > 0){
auto p = *(--s.end());
s.erase(--s.end());
ll len = p.first;
ll cnt = p.second;
if (cnt >= k){
cout << len / 2 << " " << (len - 1) / 2 << endl;
break;
}
k -= cnt;
s[len/2] += cnt;
s[(len-1)/2] += cnt;
}
}
return 0;
}