Bài 4: Phần tử nhìn thấy (TS10 Vĩnh Phúc thi thử - 2026)

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: 1900 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy số nguyên dương \(a_1, a_2, \dots, a_N\).

Với mỗi đoạn con \([l, r]\) (\(1 \le l \le r \le N\)):

  • Một phần tử \(a_i\) (\(l \le i \le r\)) được gọi là nhìn thấy từ bên trái, nếu không tồn tại phần tử \(a_j\) (\(l \le j < i\)) sao cho \(a_j \ge a_i\).
  • Một phần tử \(a_i\) (\(l \le i \le r\)) được gọi là nhìn thấy từ bên phải, nếu không tồn tại phần tử \(a_j\) (\(i < j \le r\)) sao cho \(a_j \ge a_i\).

Giá trị của đoạn \([l, r]\), ký hiệu \(f(l, r)\), là số lượng chỉ số \(i\) (\(l \le i \le r\)) khác nhau được nhìn thấy từ ít nhất một trong hai phía.

Yêu cầu: Tính tổng giá trị của tất cả các đoạn con \([l, r]\), nghĩa là tính tổng:

\[\sum_{l=1}^{n} \left( \sum_{r=l}^{n} f(l, r) \right)\]

Input

  • Dòng 1: số nguyên \(N\) (\(1 \le N \le 10^5\)).
  • Dòng 2: \(N\) số nguyên \(a_1, a_2, \dots, a_N\) (\(1 \le a_i \le 10^9\)).

Output

  • In ra một số nguyên — tổng giá trị của tất cả các đoạn con.

Example

Test 1

Input
4
4 2 3 2
Output
18
Note
  • \(f(1,1) = 1\), các đoạn độ dài 1 đều có giá trị bằng 1.
  • \(f(2,2) = 1\).
  • \(f(3,3) = 1\).
  • \(f(4,4) = 1\).
  • \(f(1,2) = 2\), các đoạn độ dài 2 đều có giá trị bằng 2.
  • \(f(2,3) = 2\).
  • \(f(3,4) = 2\).
  • \(f(1,3) = 2\), đoạn \([4, 2, 3]\): chỉ có hai phần tử đầu mỗi phía là nhìn thấy.
  • \(f(2,4) = 3\), đoạn \([2, 3, 2]\): cả 3 phần tử đều nhìn thấy.
  • \(f(1,4) = 3\), đoạn \([4, 2, 3, 2]\): phần tử thứ hai không nhìn thấy được từ cả hai phía.

Test 2

Input
8
7 2 3 2 4 3 3 7
Output
81
Note

Trong số 36 đoạn con của dãy, có:

  • 8 đoạn giá trị bằng 1.
  • 14 đoạn giá trị bằng 2.
  • 11 đoạn giá trị bằng 3.
  • 3 đoạn giá trị bằng 4.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(N \le 50\).
  • Subtask \(2\) (\(20\%\) số điểm): \(N \le 300\).
  • Subtask \(3\) (\(25\%\) số điểm): \(N \le 5000\).
  • Subtask \(4\) (\(35\%\) số điểm): Không có ràng buộc bổ sung.

Bình luận (1)

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