CF1444B.Divide and Sum

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array aa of length 2n2n. Consider a partition of array aa into two subsequences pp and qq of length nn each (each element of array aa should be in exactly one subsequence: either in pp or in qq).

Let's sort pp in non-decreasing order, and qq in non-increasing order, we can denote the sorted versions by xx and yy, respectively. Then the cost of a partition is defined as f(p,q)=∑i=1n∣xi−yi∣f(p, q) = \sum_{i = 1}^n |x_i - y_i|.

Find the sum of f(p,q)f(p, q) over all correct partitions of array aa. Since the answer might be too big, print its remainder modulo 998244353998244353.

给你一个长度为 2n2n 的数组 aa。考虑将数组 aa 划分为两个长度均为 nn 的子序列 pp 和 qq(数组 aa 中的每个元素必须且仅属于其中一个子序列:要么在 pp 中,要么在 qq 中)。

将 pp 按非递减顺序排序,将 qq 按非递增顺序排序,分别记其排序后的结果为 xx 和 yy。则该划分的代价定义为

f(p,q)=∑i=1n∣xi−yi∣。f(p, q) = \sum_{i = 1}^n |x_i - y_i|。

求所有合法划分的 f(p,q)f(p, q) 之和。由于答案可能过大,请输出其对 998244353998244353 取模的结果。

输入格式

The first line contains a single integer nn (1≤n≤150 0001 \leq n \leq 150\,000).

The second line contains 2n2n integers a1,a2,…,a2na_1, a_2, \ldots, a_{2n} (1≤ai≤1091 \leq a_i \leq 10^9) — elements of array aa.

第一行包含一个整数 nn(1≤n≤150 0001 \leq n \leq 150\,000)。

第二行包含 2n2n 个整数 a1,a2,…,a2na_1, a_2, \ldots, a_{2n}(1≤ai≤1091 \leq a_i \leq 10^9)—— 数组 aa 的元素。

输出格式

Print one integer — the answer to the problem, modulo 998244353998244353.

输出一个整数——该问题的答案对 998244353998244353 取模的结果。

输入输出样例

  • 输入#1

    1
    1 4

    输出#1

    6
  • 输入#2

    2
    2 1 2 1

    输出#2

    12
  • 输入#3

    3
    2 2 2 2 2 2

    输出#3

    0
  • 输入#4

    5
    13 8 35 94 9284 34 54 69 123 846

    输出#4

    2588544

说明/提示

Two partitions of an array are considered different if the sets of indices of elements included in the subsequence pp are different.

In the first example, there are two correct partitions of the array aa:

  1. p=[1]p = [1], q=[4]q = [4], then x=[1]x = [1], y=[4]y = [4], f(p,q)=∣1−4∣=3f(p, q) = |1 - 4| = 3;
  2. p=[4]p = [4], q=[1]q = [1], then x=[4]x = [4], y=[1]y = [1], f(p,q)=∣4−1∣=3f(p, q) = |4 - 1| = 3.

In the second example, there are six valid partitions of the array aa:

  1. p=[2,1]p = [2, 1], q=[2,1]q = [2, 1] (elements with indices 11 and 22 in the original array are selected in the subsequence pp);
  2. p=[2,2]p = [2, 2], q=[1,1]q = [1, 1];
  3. p=[2,1]p = [2, 1], q=[1,2]q = [1, 2] (elements with indices 11 and 44 are selected in the subsequence pp);
  4. p=[1,2]p = [1, 2], q=[2,1]q = [2, 1];
  5. p=[1,1]p = [1, 1], q=[2,2]q = [2, 2];
  6. p=[2,1]p = [2, 1], q=[2,1]q = [2, 1] (elements with indices 33 and 44 are selected in the subsequence pp).

如果子序列 pp 所包含元素的下标集合不同,则称这两个数组划分是不同的。

在第一个例子中,数组 aa 有两种正确的划分方式:

  1. p=[1]p = [1], q=[4]q = [4],此时 x=[1]x = [1], y=[4]y = [4], f(p,q)=∣1−4∣=3f(p, q) = |1 - 4| = 3;
  2. p=[4]p = [4], q=[1]q = [1],此时 x=[4]x = [4], y=[1]y = [1], f(p,q)=∣4−1∣=3f(p, q) = |4 - 1| = 3。

在第二个例子中,数组 aa 有六种有效的划分方式:

  1. p=[2,1]p = [2, 1], q=[2,1]q = [2, 1](在原数组中下标为 11 和 22 的元素被选入子序列 pp);
  2. p=[2,2]p = [2, 2], q=[1,1]q = [1, 1];
  3. p=[2,1]p = [2, 1], q=[1,2]q = [1, 2](在子序列 pp 中选取了原数组中下标为 11 和 44 的元素);
  4. p=[1,2]p = [1, 2], q=[2,1]q = [2, 1];
  5. p=[1,1]p = [1, 1], q=[2,2]q = [2, 2];
  6. p=[2,1]p = [2, 1], q=[2,1]q = [2, 1](在子序列 pp 中选取了原数组中下标为 33 和 44 的元素)。

输入解题思路,AI测评打分。不知道怎么写?

首页