有一个长度为 $n$ 的序列 $a$,我们把在其中任意选择两个数求得的所有的最小值放入长度为 $\dfrac{n(n-1)}2$ 的序列 $b$ 中并将其随意打乱,请通过 $b$ 还原 $a$,如果可能的序列 $a$ 不止一种,输出任意一种即可。
真没什么好说的。
将 $b$ 升序排序,然后直接就把 $a$ 求出来了。
注意最后一项其实只要设为一个大数即可,所以为了不处理边界直接设为 $10^9$ 就行。
void Solve()
{
n = read();
int m = n * (n - 1) / 2;
fup (i, 1, m)
a[i] = read();
sort(a + 1, a + m + 1);
int i, j;
for (i = 1, j = n - 1; i <= m; i += j, -- j )
wsp(a[i]);
wel(1e9);
return;
}