Codeforces Round 1008 (Div. 2) C
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;}