F - Double Sum 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 500500

問題文

整数列 A=(A1,A2,,AN)A = (A_1, A_2, \dots, A_N) が与えられます。
次の式を計算してください。

i=1Nj=i+1Nmax(AjAi,0)\displaystyle \sum_{i=1}^N \sum_{j=i+1}^N \max(A_j - A_i, 0)


なお、制約下において答えが 2632^{63} 未満となることは保証されています。

制約

  • 2N4×1052 \leq N \leq 4 \times 10^5
  • 0Ai1080 \leq A_i \leq 10^8
  • 入力される値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN
A1A_1 A2A_2 \dots ANA_N

出力

式の値を出力せよ。


入力例 1Copy

Copy
3
2 5 3

出力例 1Copy

Copy
4

(i,j)=(1,2)(i, j) = (1, 2) のとき max(AjAi,0)=max(3,0)=3\max(A_j - A_i, 0) = \max(3, 0) = 3 です。
(i,j)=(1,3)(i, j) = (1, 3) のとき max(AjAi,0)=max(1,0)=1\max(A_j - A_i, 0) = \max(1, 0) = 1 です。
(i,j)=(2,3)(i, j) = (2, 3) のとき max(AjAi,0)=max(2,0)=0\max(A_j - A_i, 0) = \max(-2, 0) = 0 です。
これらを足し合わせた 3+1+0=43 + 1 + 0 = 4 が答えとなります。


入力例 2Copy

Copy
10
5 9 3 0 4 8 7 5 4 0

出力例 2Copy

Copy
58

Score: 500500 points

Problem Statement

You are given an integer sequence A=(A1,A2,,AN)A = (A_1, A_2, \dots, A_N).
Calculate the following expression:

i=1Nj=i+1Nmax(AjAi,0)\displaystyle \sum_{i=1}^N \sum_{j=i+1}^N \max(A_j - A_i, 0)


The constraints guarantee that the answer is less than 2632^{63}.

Constraints

  • 2N4×1052 \leq N \leq 4 \times 10^5
  • 0Ai1080 \leq A_i \leq 10^8
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

NN
A1A_1 A2A_2 \dots ANA_N

Output

Print the value of the expression.


Sample Input 1Copy

Copy
3
2 5 3

Sample Output 1Copy

Copy
4

For (i,j)=(1,2)(i, j) = (1, 2), we have max(AjAi,0)=max(3,0)=3\max(A_j - A_i, 0) = \max(3, 0) = 3.
For (i,j)=(1,3)(i, j) = (1, 3), we have max(AjAi,0)=max(1,0)=1\max(A_j - A_i, 0) = \max(1, 0) = 1.
For (i,j)=(2,3)(i, j) = (2, 3), we have max(AjAi,0)=max(2,0)=0\max(A_j - A_i, 0) = \max(-2, 0) = 0.
Adding these together gives 3+1+0=43 + 1 + 0 = 4, which is the answer.


Sample Input 2Copy

Copy
10
5 9 3 0 4 8 7 5 4 0

Sample Output 2Copy

Copy
58


2024-05-12 (日)
07:43:00 +09:00