zoukankan      html  css  js  c++  java
  • 第k小(二分)

    #include<iostream>
    using namespace std;
    #define N 90000
    #define ll long long
    #define inf 1000000000
    ll s[N],t[N];
    int n,k;
    bool check(ll x)
    {
        int tp = 0;
        for(int i = 1;i <= n;i++)
        {
            if(x >= s[i] && x <= t[i]) tp += (x - s[i]);
            else if(x > t[i]) tp += (t[i] - s[i] + 1);
        }
        return tp <= k;
    }
    int main()
    {
           cin>>n;
        ll l = inf + 10,r = -inf - 10;
        for(int i = 1;i <= n;i++)
        {
            cin>>s[i]>>t[i];
            l = min(s[i],l),r = max(r,t[i]);
        }
        cin>>k;
        while(l <= r)
        {
            ll mid = (l + r) >> 1;
            if(check(mid)) l = mid + 1;
            else r = mid - 1;
        }
        cout<<r;
    }
    //3
    //5 9 
    //1 6 
    //7 10 
    //11
  • 相关阅读:
    week4
    week3
    2017福州大学面向对象程序设计寒假作业二
    Week2
    10个android开发必备的开源项目
    Day Ten
    Day Nine
    Day Eight
    Day Seven
    Day Six
  • 原文地址:https://www.cnblogs.com/Chri-K/p/13830600.html
Copyright © 2011-2022 走看看