题目大意:给一个数组,每次操作删去数组中最小的数,然后其他数都减去这个数,问每次操作后出现的最小值的最大值
思路:每次操作后的最小值其实就是操作前第二小的数减去最小的数,所以只要排个序然后求差分数组的最大值即可。
#include<bits/stdc++.h>
using namespace std;
long long a[200005],b[200005];
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
scanf("%lld", &a[i]);
}
sort(a, a + n);
for (int i = 0; i < n; i++)
{
if (i == 0)
{
b[i] = a[i];
}
else
{
b[i] = a[i] - a[i - 1];
}
}
sort(b, b + n);
printf("%lld\n", b[n - 1]);
}
return 0;
}