A27215. #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 += …
判断题
困难
知识点
题目描述
#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。( )
选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员
上一题
下一题