DHBB 2026 - DX37 - 10 - Dãy nửa tăng

Xem dạng PDF

Gửi bài giải

Điểm: 70,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout
Test chính thức

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Một dãy số nguyên ~a_1,a_2,\dots,a_n~ được gọi là dãy tăng nếu ~a_i>a_{i-1}~ với mọi ~i~. Ví dụ, ~(1,2,3,4,6)~ là một dãy tăng, trong khi ~(2,1,3,4,6)~ thì không.

Một dãy số ~b_1,b_2,\dots,b_n~ được gọi là dãy nửa tăng khi tồn tại một cặp chỉ số ~(l,r)~ có thể bằng nhau sao cho sau khi đảo ngược đoạn con liên tiếp từ ~l~ đến ~r~ của dãy ~b~ (gồm các phần tử ~b_l,b_{l+1},\dots,b_r~) thì dãy thu được là một dãy tăng. Ví dụ, ~(2,1,3,4,6)~ là một dãy nửa tăng vì có thể đảo ngược đoạn con ~(1,2)~ của dãy để tạo thành dãy tăng ~(1,2,3,4,6)~, trong khi ~(2,1,4,3,6)~ thì không.

Bạn được cho một hoán vị độ dài ~n~ (một dãy số mà mỗi số tự nhiên từ ~1~ đến ~n~ xuất hiện đúng một lần). Hãy đếm xem có bao nhiêu đoạn con liên tiếp của hoán vị này là một dãy nửa tăng.

Input

  • Dòng đầu tiên gồm một số nguyên dương ~n~ ~(1 \le n \le 10^6)~.

  • Dòng tiếp theo gồm ~n~ số nguyên dương ~p_1,p_2,\dots,p_n~ là hoán vị được cho ~(1 \le p_i \le n)~.

Output

Một dòng duy nhất gồm số lượng đoạn con liên tiếp của ~p~ là một dãy nửa tăng.

Scoring

Subtask Điểm Ràng buộc
1 ~20\%~ ~n \le 80~
2 ~20\%~ ~n \le 200~
3 ~20\%~ ~n \le 1000~
4 ~20\%~ ~n \le 10000~
5 ~20\%~ Không có giới hạn gì thêm

Sample Input 1

5
5 2 4 1 3

Sample Output 1

9

Notes

Các đoạn con liên tiếp sau là các dãy nửa tăng: ~(5),(2),(4),(1),(3),(5,2),(2,4),(4,1),(1,3)~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.