2023年CSP-S1阅读程序题3:#include
2023年CSP-S1阅读程序题3:
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool fo(vector<int>& a, int m, int k){
int s =0;
for(int i =0,j =0; i<a.size(); i++){
while (a[i]- a[j]>m)j++;
s += i -j;
}
return s >= k;
}
int f(vector<int>& a, int k){
sort(a.begin(), a.end());1
int g =0;
int h = a.back()- a[0];
while(g< h){
int m = g+(h -g)/ 2;
if(fo(a,m, k)){
h = m;
} else {
g = m+1;27 }28 }29
return g;31}32
int main(){34 int n,k;35 cin >> n >> k;36 vector<int> a(n,0);37 for(int i =o; i<n; i++){
cin >> a[i];
}
cout<< f(a,k)<< endl;
return 0
}假设输入总是合法的且|a[i]l≤108、n≤10000和1≤k≤n(n-1)/2,完成下面的判断题和单选题:
将第22行的“g+(h-g)/2”改为“(h+g)>>1”,输出不变。()
答案
A