#1555. 珅泽教育CSP-J第一轮模拟考第三套 第 39 题

珅泽教育CSP-J第一轮模拟考第三套 第 39 题

三、完善程序(单选题,每小题3分,共计30分)

第1题

给定一个长度为 nn、由正整数组成的序列 a1,a2,,ana_1,a_2,\ldots,a_n,请你求出所有子段中第 kk 小的子段和。

#include<iostream>
int n,k,a[100005];
bool check(long long mid) {
    long long s = 0;
    for(int l = 1,r = 1;r <= n; r++) {
        while(l <= r && ____(1)____) l++;
        s+=____(2)____;
    }
    return ____(3)____;
}
int main(){
    std::cin>>n>>k;
    for(int i=1;i<=n;i++) {
        std::cin >>a[i];
        a[i]+=a[i-1];
    }
    long long lbound = 0,rbound = 5000000000,mid;
    while(lbound <= rbound) {
        mid = (lbound + rbound) >> 1;
        if(check(mid)) ____(4)____rbound = mid - 1;
        else ____(5)____lbound = mid + 1;
    }
    std::cout << lbound;
    return 0;
}

(4)(5) 处应填( )。

{{ select(1) }}

  • lbound = mid + 1rbound = mid
  • rbound = mid - 1lbound = mid
  • lbound = mid + 1rbound = mid - 1
  • rbound = mid - 1lbound = mid + 1