#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());
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;
}
}
return g;
}
int main() {
int n,k;
cin >> n >> k;
vector<int> a(n,0);
for (int i =o; i<n; i++) {
cin >> a[i];
}
cout<< f(a,k)<< endl;
return 0
}
假设输入总是合法的且|a[i]|≤10、n≤10000和1≤k≤n(n-1)/2,完成下面的判断题和单选题。
将第24行的“m”改为“m-1”输出有可能不变,而剩下情况为少1。( )