题解 CF1360B 【Honest Coach】

rui_er

2020-05-25 13:30:19

Solution

这题有点复杂,简化一下问题。 把这些数分为两组,要求一组的最大值与另一组的最小值的差尽量小。 所以我们可以知道,若 $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; } ```