Sub-array

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

LƯU Ý: LÀM CẨN THẬN VÌ BÀI NÀY RẤT DỄ RUNTIME ERROR

Cho dãy \(A\) có \(N\) phần tử. Giá trị của một dãy con liên tiếp trong \(A\) là tích ba chỉ số: Giá trị nhỏ nhất của dãy con, Giá trị lớn nhất của dãy con và Độ dài dãy con.

Ví dụ: mảng \(A = [1, 2, 3, 4]\) có dãy con liên tiếp là \([1, 2, 3]\) thì giá trị của dãy con này là \(1 \cdot 3 \cdot 3 = 9\) (với \(\min = 1, \max = 3, \text{size} = 3\)).

Nhiệm vụ của bạn là tính tổng tất cả các giá trị của các dãy con liên tiếp đó.

Input

  • Dòng đầu là số nguyên dương \(N\), là số phần tử của mảng \(A\) (\(1 \le N \le 10^6\)).
  • Dòng thứ hai là các số nguyên \(A_1, A_2, \dots, A_N\) (\(|A_i| \le 10^9\)).

Output

  • Một dòng duy nhất là tổng tìm được sau khi modulo \(10^9\).

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(N \le 5000\).
  • Subtask \(2\) (\(50\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
2
1 3
Output
16
Note

Các dãy con liên tiếp của dãy \([1, 3]\) là:

  • \([1]\): \(\min=1, \max=1, \text{size}=1 \Rightarrow 1 \cdot 1 \cdot 1 = 1\).
  • \([3]\): \(\min=3, \max=3, \text{size}=1 \Rightarrow 3 \cdot 3 \cdot 1 = 9\).
  • \([1, 3]\): \(\min=1, \max=3, \text{size}=2 \Rightarrow 1 \cdot 3 \cdot 2 = 6\).

Tổng cộng: \(1 + 9 + 6 = 16\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.