真心无聊。。div1难度能轻松口胡.jpg
A,随便二分一下就没了,或者排个序啥的,无所谓…
B,后缀排序套个板子就过了…
C,线段树上面乱搞,他说了模数你乘起来发现不超过 int,随便写就过了…
D,子集卷积完了 NTT,然后 FWT 一手就过了。
E,随便 DP 一下就过了。
F,二合一的题,cot2+bzoj原题搬到序列上,随便写即可,这种做法应该是吊打 std 了…还是我应该说 std 太蠢了…
代码到时候再补…
#include <bits/stdc++.h>
#define in cin
using namespace std;
signed main() {
ios :: sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int _;
in >> _;
while(_ --) {
int n;
in >> n;
vector <int> a(n);
for(int i = 0 ; i < n ; i ++) in >> a[i];
vector <int> l, r; l.push_back(0), r.push_back(0);
for(int i = 0 ; i < n ; i ++) {
if(a[i] < 0) {
l.push_back(-a[i]);
} else {
r.push_back(a[i]);
}
}
sort(l.begin(), l.end());
sort(r.begin(), r.end());
int ans = 1e9, res = 1e9;
for(int i = 0 ; i < r.size() - 1; i ++) {
int x = r[i + 1] + r.back() >> 1;
res = min(res, max({r[i], x - r[i + 1], r.back() - x}));
}
ans = min(ans, max(res, l.back()));
res = 1e9;
for(int i = 0 ; i < l.size() - 1; i ++) {
int x = l[i + 1] + l.back() >> 1;
res = min(res, max({l[i], x - l[i + 1], l.back() - x}));
}
ans = min(ans, max(res, r.back()));
cout << ans << '\n';
}
return 0;
}