题解 CF1360B 【Honest Coach】
rui_er
2020-05-25 13:30:19
这题有点复杂,简化一下问题。
把这些数分为两组,要求一组的最大值与另一组的最小值的差尽量小。
所以我们可以知道,若 $a_i$ 与 $a_j$ 差最小,则把比 $a_i$ 小的分一组,比 $a_j$ 大的分一组即可。
为了优化时间,提前排个序即可。
代码:
```cpp
//By: Luogu@rui_er(122461)
#include <bits/stdc++.h>
using namespace std;
int T, n, a[51];
int main() {
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
for(int i=1;i<=n;i++) {
scanf("%d", &a[i]);
}
sort(a+1, a+1+n);
int mi = 0x3f3f3f3f;
for(int i=2;i<=n;i++) {
mi = min(mi, a[i]-a[i-1]);
}
printf("%d\n", mi);
}
return 0;
}
```