Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<queue>
- using namespace std;
- bool debug = false;
- struct lenght{
- int l,r,len;
- bool operator < (const lenght& rhs)const
- {
- return len < rhs.len;
- }
- };
- int main()
- {
- int T;
- scanf("%d",&T);
- priority_queue<lenght> pq;
- for(int t = 1 ; t <= T ; t ++){
- int n,k;
- scanf("%d %d",&n,&k);
- while(!pq.empty())pq.pop();
- pq.push({0,n+1,n});
- int ansmax,ansmin;
- for(int i=1;i<=k;i++){
- int l = pq.top().l;
- int r = pq.top().r;
- int len = pq.top().len;
- pq.pop();
- int m = (l+r)/2;
- ansmax = r - m - 1;
- ansmin = m - l - 1;
- if(debug)printf("Case %d -> i = %d , (l,r,m) : (%d,%d,%d) , len : %d , ans(%d,%d) \n",t,i,l,r,m,len,ansmax,ansmin);
- pq.push({l,m,m - l - 1});
- pq.push({m,r,r - m - 1});
- }
- printf("Case #%d: %d %d\n",t,ansmax,ansmin);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment