F. 【普及】子数组的最值之差

    传统题 100ms 32MiB

【普及】子数组的最值之差

【普及】子数组的最值之差

给你一个长度为 nn 的数组 aa,定义:

$$f(l, r) = \max\{a_l, a_{l+1}, \cdots, a_r\} - \min\{a_l, a_{l+1}, \cdots, a_r\}$$

请你计算下面式子的结果:

i=1nj=inf(i,j)\sum_{i=1}^{n}\sum_{j=i}^{n}f(i,j)

简单来说:

  • f(l,r)f(l, r):表示 子数组 [al,al+1,,ar][a_l, a_{l+1}, \cdots, a_{r}] 中的 最大值与最小值之差
  • 求所有子数组的 f(l,r)f(l, r),再相加,求最后的总和

由于答案可能很大,你只需要输出答案对 998244353 取模后的结果

输入格式

第一行包含一个整数 nn 代表数组长度;

第二行包含 nn 个整数表示数组 aa

输出格式

对于每组数据输出一行,包含答案

3
2 1 3
5

提示

【样例 1 解释】

  • f([2])=22=0f([2]) = 2 - 2 = 0
  • f([2,1])=21=1f([2, 1]) = 2 - 1 = 1
  • f([2,1,3])=31=2f([2, 1, 3]) = 3 - 1 = 2
  • f([1])=11=0f([1]) = 1 - 1 = 0
  • f([1,3])=31=2f([1, 3]) = 3 - 1 = 2
  • f([3])=33=0f([3]) = 3 - 3 = 0
  • 结果为:0+1+2+0+2+0=50+1+2+0+2+0=5

【数据范围】

  • 1n1051 \le n \le 10^5
  • 0ai1050 \le a_i \le 10^5
请思考后再点击查看提示

来源