나무 심기

시간 제한2초메모리 제한128 MB

요약
나무를 순서대로 심으면서 각 나무가 이전에 심어진 나무들과의 거리 합을 비용으로 계산하고, 그 비용들의 곱을 1,000,000,007로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

유형
세그먼트 트리, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

1번부터 N번까지 번호가 매겨진 N개의 나무가 있다. i번 나무는 좌표 X[i]에 심는다.

동호는 1번 나무부터 N번 나무까지 순서대로 심는다. 1번 나무를 심는 비용은 0이다. 그 이후 i번 나무를 심는 비용은 이미 심어진 모든 나무와 i번 나무 사이의 거리 합이다. 따라서 3번 나무를 심는 비용은 1번 나무와의 거리와 2번 나무와의 거리의 합이다.

2번 나무부터 N번 나무까지 각 나무를 심는 비용을 모두 곱한 값을 구하라.

입력

첫째 줄에 나무의 개수 N (2 <= N <= 200,000)이 주어진다.

둘째 줄부터 N개의 줄에는 1번 나무의 좌표부터 차례대로 주어진다. 각 좌표는 0 이상 200,000 미만의 정수이다.

출력

모든 비용의 곱을 1,000,000,007로 나눈 나머지를 출력한다.

예제5

  1. 예제 1

    입력
    5
    3
    4
    5
    6
    7
    
    예상 출력
    180
  2. 예제 2

    입력
    3
    5
    13
    9
    
    예상 출력
    64
    
  3. 예제 3

    입력
    4
    1
    8
    15
    1
    
    예상 출력
    3087
    
  4. 예제 4

    입력
    10
    4
    59
    94
    89
    4
    59
    94
    89
    4
    59
    
    예상 출력
    591860767
    
  5. 예제 5

    입력
    5
    199999
    197532
    99069
    83762
    14539
    
    예상 출력
    499739175