由于最大值不能变大,一个很自然的想法是把最大值去掉,求 $S$ 剩下元素的最小值最小能变成多少,这个可以证明是对的。我们考虑一个元素怎么形成的,任何一个元素都可以表示为两个不交的集合 $A,B$ 的元素之差。那么这时候大概要思考下界是什么了。我们找到 $\min\limits_{A\cap B=\varnothing}|\sum\limits_{x\in A}x-\sum\limits_{x\in B}x|$,然后尝试证明可以达到这个下界:每次取出 $x\in A,y\in B$,取 $T=\{x,y\}$,如果 $x\ge y$,把 $x-y$ 放入 $A$,否则把 $y-x$ 放入 $B$。然后就证明了可以取到下界。
那么现在问题变为求最小的集合之差。
然后考虑我们现在求的东西是什么:子集和的差的最小值,而子集和的方案数有 $2^n$ 种,值域却只有 $nV$,所以当 $n$ 足够大的时候,根据抽屉原理,一定存在两个子集和相同。当 $V=10^5$ 时最小的 $n$ 为 $22$。所以我们只要随便取 $22$ 个数,枚举这些数的子集,找到两个集合的和相同,去掉交集,然后按上述方法构造即可。如果 $n<22$,枚举所有子集和暴力找即可。时间复杂度 $\mathcal{O}(VC+2^C+n)$,其中 $C=22,V=10^5$。