Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using lli = long long;
- int main(){
- int q;
- scanf("%d", &q);
- for(int i=1;i<=q;i++){
- lli n, k, d, l, r;
- scanf("%lld%lld", &n, &k);
- printf("Case #%d: ", i);
- if(n == k){
- printf("0 0\n");
- continue;
- }
- set <lli> data;
- unordered_map <lli, lli> dis;
- data.insert(n);
- dis[n] = 1;
- lli cnt = 0;
- while(true){
- auto it = prev(data.end());
- d = *it;
- cnt += dis[d];
- if(d % 2 == 1) l = r = d/2;
- else {
- l = d/2;
- r = d/2-1;
- }
- if(cnt >= k){
- printf("%lld", max(l, r));
- printf(" %lld\n", min(l, r));
- break;
- }
- data.erase(it);
- data.insert(l);
- data.insert(r);
- dis[l] += dis[d];
- dis[r] += dis[d];
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement