组合题6 个小题
已作答 0 / 6
1#include <vector>2#include <algorithm>3#include <iostream>4 5using namespace std;6 7bool f0(vector<int> &a, int m, int k) {8 int s = 0;9 for (int i = 0, j = 0; i < a.size(); i++) {10 while (a[i] - a[j] > m) j++;11 s += i - j;12 }13 return s >= k;14}15 16int f(vector<int> &a, int k) {17 sort(a.begin(), a.end());18 19 int g = 0;20 int h = a.back() - a[0];21 while (g < h) {22 int m = g + (h - g) / 2;23 if (f0(a, m, k)) {24 h = m;25 }26 else {27 g = m + 1;28 }29 }30 31 return g;32}33 34int main() {35 int n, k;36 cin >> n >> k;37 vector<int> a(n, 0);38 for (int i = 0; i < n; i++) {39 cin >> a[i];40 }41 cout << f(a, k) << endl;42 return 0;43}假设输入总是合法的且 1≤ai≤108,n≤10000,1≤k≤2n(n−1),完成下面的判断题和单选题:
将第 24 行的 m 改为 m - 1,输出有可能不变,而剩下情况为少 1。()