만드는 중입니다

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

수열의 점수

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

요약
최대 200,000개의 음이 아닌 정수 수열에서 모든 연속 부분수열의 최솟값과 최댓값의 곱을 더한 값을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
정렬, 스택, 분할 정복, 수학
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \dots, A_N이 있을 때, 이 수열의 점수는 다음과 같이 정의한다.

min⁡i=1NAi⋅max⁡i=1NAi\min_{i=1}^{N} A_i \cdot \max_{i=1}^{N} A_i

음이 아닌 정수로 이루어진 수열 BB가 주어질 때, BB의 모든 연속 부분 수열에 대한 점수의 합을 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에 수열 BB의 길이 NN이 주어진다. (1≤N≤200 000)(1 \le N \le 200\,000)

두 번째 줄에 정수 B1,B2,…,BNB_1, B_2, \dots, B_N이 공백으로 구분되어 주어진다. (0≤Bi≤109)(0 \le B_i \le 10^9)

출력

BB의 모든 연속 부분 수열에 대한 점수의 합을 출력한다. 정답이 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    5
    1 5 3 4 2
    
    예상 출력
    143