• C. Keshi Is Throwing a Party- Codeforces Global Round 17


    C. Keshi Is Throwing a Party

    time limit per test

    1 second

    memory limit per test

    256 megabytes

    input

    standard input

    output

    standard output

    Keshi is throwing a party and he wants everybody in the party to be happy.

    He has nn friends. His ii-th friend has ii dollars.

    If you invite the ii-th friend to the party, he will be happy only if at most aiai people in the party are strictly richer than him and at most bibi people are strictly poorer than him.

    Keshi wants to invite as many people as possible. Find the maximum number of people he can invite to the party so that every invited person would be happy.

    Input

    The first line contains a single integer tt (1≤t≤104)(1≤t≤104) — the number of test cases. The description of the test cases follows.

    The first line of each test case contains a single integer nn (1≤n≤2⋅105)(1≤n≤2⋅105) — the number of Keshi's friends.

    The ii-th of the following nn lines contains two integers aiai and bibi (0≤ai,bi

    It is guaranteed that the sum of nn over all test cases doesn't exceed 2⋅1052⋅105.

    Output

    For each test case print the maximum number of people Keshi can invite.

    Example

    input

    Copy

    3
    3
    1 2
    2 1
    1 1
    2
    0 0
    0 1
    2
    1 0
    0 1
    

    output

    Copy

    2
    1
    2
    

    Note

    In the first test case, he invites the first and the second person. If he invites all of them, the third person won't be happy because there will be more than 11 person poorer than him.

    =========================================================================

    二分和贪心,二分枚举选的个数,判定函数里面运用贪心思想,能选就选。选一个的话,如果剩下的k-cnt-1个少于a[i],并且已经被选的 cnt<=b[i],那么就可以选该物品。

    1. #include
    2. # include
    3. # include
    4. using namespace std;
    5. typedef long long int ll;
    6. ll a[200000+10],b[200000+10];
    7. int n;
    8. bool check(ll mid)
    9. {
    10. int now=0;
    11. for(int i=1;i<=n;i++)
    12. {
    13. if(mid-now-1<=a[i]&&now<=b[i])
    14. now++;
    15. if(now>=mid)
    16. return 1;
    17. }
    18. return 0;
    19. }
    20. int main()
    21. {
    22. int t;
    23. cin>>t;
    24. while(t--)
    25. {
    26. cin>>n;
    27. for(int i=1;i<=n;i++)
    28. {
    29. cin>>a[i]>>b[i];
    30. }
    31. int left=0,right=n;
    32. while(left<=right)
    33. {
    34. int mid=(left+right)>>1;
    35. if(check(mid))
    36. left=mid+1;
    37. else
    38. right=mid-1;
    39. }
    40. cout<
    41. }
    42. return 0;
    43. }

  • 相关阅读:
    Eureka详解
    基于Jeecgboot前后端分离的ERP系统开发代码生成(二)
    华为交换机ssh远程登录配置命令
    2021年3月-第02阶段-前端基础-Flex 伸缩布局-移动WEB开发_flex布局
    可替代allegroA3909的国产芯片GC3909的数据分析
    万字解析设计模式之 适配器模式
    根据模板动态生成word(三)使用poi-tl生成word
    文献阅读(183)MAGMA
    ebay、虾皮、Lazada、poshmark等跨境本土店群多账号如何做防关联
    SECS/GEM半导体协议介绍
  • 原文地址:https://blog.csdn.net/jisuanji2606414/article/details/126128724