Dãy đẹp

Xem dạng PDF

Gửi bài giải

Điểm: 0,01
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: NARR.INP
Output: NARR.OUT

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Thuật toán sắp xếp nổi bọt để sắp xếp không giảm một dãy số nguyên ~b~ độ dài ~m~, có thể được mô tả như sau:

  • Bước 1: nếu dãy ~b~ là một dãy không giảm thì kết thúc thuật toán

  • Bước 2: Chọn một vị trí ~i~ (~1 \le i < m~) nhỏ nhất mà ~b_i > b_{i + 1}~, tráo đổi giá trị của hai phần tử ~b_i~ và ~b_{i + 1}~. Tiếp tục quay lại Bước 1.

Cho một dãy số nguyên ~a~ độ dài ~n~, số thứ ~i~ là ~a_i~ (~|a_i| \le 10^9~). Đếm số cách chia dãy ~a~ thành các dãy đẹp liên tiếp, chia dư cho (~10^9 + 7~).

Một dãy liên tiếp được gọi là dãy đẹp nếu số bước để sắp xếp không giảm dãy đó bằng thuật toán sắp xếp nổi bọt nêu trên, sử dụng không qua ~k~ (~k \le n^3~) lần tráo đổi giá trị ở Bước 2.

Input

Vào từ tệp văn bản NARR.INP gồm:

  • Dòng đầu tiên chứa hai số nguyên dương ~n~ và ~k~ (~n \le 2 \times 10^5~, ~k \le n^3~).

  • Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ (~|a_i| \le 10^9~), các số cách nhau bởi ít nhất một dấu cách.

Output

Ghi kết quả lên tệp văn bản NARR.OUT

  • Gồm một số nguyên duy nhất là số cách chia dãy ~a~ thành các dãy đẹp liên tiếp thỏa mãn yêu cầu đề bài

Scoring

Subtask Điểm Giới hạn
1 ~10\%~ ~n \le 15~
2 ~20\%~ ~n \le 100~
3 ~30\%~ ~n \le 3000~
4 ~40\%~ không có ràng buộc gì thêm

Sample Input 1

5 10
1 2 3 4 5

Sample Output 1

16

Sample Input 2

3 1
3 2 1

Sample Output 2

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.