만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

숙제

시간 제한3초메모리 제한1024 MB

요약
정점마다 값이 적힌 트리가 주어질 때, 모든 경로 i에서 j까지 (최댓값 - 최솟값) × 경로의 정점 수를 구해 합산합니다.
난이도

어려움10점 중 8점

유형
트리, 분할 정복, 정렬
정답자
아직 제출이 없습니다

문제

린은 이제 다 커서 곧 대학에 들어간다. 하지만 입학은 그리 쉽지 않다. 그래서 린은 준비하려고 지난 해 문제들을 풀어 보기로 했다.

작년 입학 시험 문제 중 하나는 다음과 같았다. 트리가 주어지고, ii번 정점에는 정수 aia_i가 적혀 있다. 참가자는 다음 합을 구해야 했다.

∑i=1n∑j=in(max⁡(i…j)−min⁡(i…j))⋅len(i…j)\sum_{i=1}^n \sum_{j=i}^n (\max(i \ldots j)-\min(i \ldots j)) \cdot len(i \ldots j)

여기서 max⁡(i…j)\max(i \ldots j)는 ii에서 jj까지 가는 경로 위에 있는 모든 정점 kk의 aka_k 중 최댓값이다. min⁡(i…j)\min(i \ldots j)는 같은 값들 중 최솟값이다. len(i…j)len(i \ldots j)는 ii에서 jj까지 가는 경로에 있는 정점의 개수이다.

린은 몇 시간째 이 문제를 풀고 있지만 아직 해결하지 못했다. 린을 도와주자.

입력

첫째 줄에 트리의 정점 개수 nn (1≤n≤5⋅1041 \le n \le 5 \cdot 10^4)이 주어진다. 둘째 줄에는 각 정점에 적힌 nn개의 정수 aia_i (0≤ai≤1050 \le a_i \le 10^5)가 주어진다. 다음 n−1n-1개 줄에는 트리의 간선을 나타내는 정수 쌍 u,vu, v (1≤u,v≤n1 \le u, v \le n)가 한 줄에 하나씩 주어진다.

출력

구한 합의 값을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 2 3 4 5
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    70
    
  2. 예제 2

    입력
    4
    0 1 1 1
    1 2
    1 3
    1 4
    
    예상 출력
    15