#P2008. 【挑战题】两个数组和函数的和

【挑战题】两个数组和函数的和

题目描述

给你两个长度为 n n 的数组 a a b b

定义一个函数 f(l,r)=liraibi f(l, r) = \sum\limits_{l \le i \le r} a_i \cdot b_i

你的任务是重新排列数组 b b 的元素(可以选择元素的任意顺序),以使 1lrnf(l,r) \sum\limits_{1 \le l \le r \le n} f(l, r) 的值最小。由于答案可能非常大,所以你需要打印的是它对 998244353 998244353 取模后的结果。注意你应该使答案尽可能地小,但不是其余数尽可能小。

输入格式

输入的第一行包含一个整数 n n 1n2105 1 \le n \le 2 \cdot 10^5 )——数组 a a b b 中的元素个数。

输入的第二行包含 n n 个整数 a1,a2,,an a_1, a_2, \dots, a_n 1ai106 1 \le a_i \le 10^6 ),ai a_i 是数组 a a 的第 i i 个元素。

输入的第三行包含 n n 个整数 b1,b2,,bn b_1, b_2, \dots, b_n 1bj106 1 \le b_j \le 10^6 ),bj b_j 是数组 b b 的第 j j 个元素。

输出格式

打印一个整数 —— 在重新排列 b b 的元素后,1lrnf(l,r) \sum\limits_{1 \le l \le r \le n} f(l, r)

f(l,r) 的最小可能值,取模 998244353 998244353 后的结果。注意你应该使答案尽可能地小,但不是其余数。

样例 #1

样例输入 #1

5

1 8 7 2 4

9 7 2 9 3

样例输出 #1

646

样例 #2

样例输入 #2

1

1000000

1000000

样例输出 #2

757402647

样例 #3

样例输入 #3

2

1 3

4 2

样例输出 #3

20