|
发表于 2023-11-15 20:03:00
|
显示全部楼层
你需要设置全局变量a,但是在你的代码中a是一个局部变量。你需要将a声明为全局变量,可以将它放在函数外部,例如在int n;的下面。
- #include <bits/stdc++.h>
- using namespace std;
- int n;
- vector<int> a; // 将a声明为全局变量
- bool check(int mid)
- {
- int p;
- for(int j=0; j<3; j++)
- {
- p = upper_bound(a.begin(), a.end(), a[p]+mid*2) - a.begin();
- if(p == n) return true;
- }
- return false;
- }
- void solve()
- {
- cin >> n;
- a.resize(n); // 调整a的大小
- for(int i=0; i<n; i++)
- {
- cin >> a[ i];
- }
- sort(a.begin(), a.end());
- int l=1, r=1e9;
- while(l<r)
- {
- int mid = l+r >> 1;
- if(check(mid)) r = mid-1;
- else l = mid;
- }
- cout << r << endl;
- }
- int main()
- {
- int t;
- cin >> t;
- while(t--)
- {
- solve();
- }
- }
复制代码 |
|