C 构造
题意:a的数据范围大,b的数据范围小,要求所有的a不同,考虑让丢失的那个a最大即可。问题变成:构造一个最大的a[i]
思路:令a2是最大的,将a1,a3,a5....a2*n+1,置为最大的b,将a4,a6...a2*n置为最小的b
const int N = 4e5 + 10;
LL n,m,k;
// vector<LL> a;
LL a[N],b[N];
void solve()
{
cin >> n;
for (int i = 1;i <= 2 * n;i ++) cin >> b[i];
sort(b + 1,b + 1 + 2 * n);
LL t = 0;
LL r = n;
for (int i = 1;i <= 2 *n + 1;i += 2)
{
a[i] = b[r ++];
t += a[i];
}
LL l = 1;
for (int i = 4;i <= 2 * n + 1;i += 2)
{
a[i] = b[l ++];
t -= a[i];
}
a[2] = t;
for (int i = 1;i <= 2 * n + 1;i ++)
cout << a[i] << " ";
cout << endl;
}