Hoán vị

Xem dạng PDF

Gửi bài giải

Điểm: 1,51 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
XV Polish Olympiad in Informatics
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Đa tập hợp (multiset) là một cấu trúc toán học tương tự như tập hợp, nhưng mỗi phần tử của một đa tập hợp có thể xuất hiện nhiều lần. Tương tự như tập hợp, các phần tử của một đa tập hợp có thể được sắp xếp theo nhiều cách khác nhau. Chúng ta gọi mỗi cách sắp xếp là một hoán vị của đa tập hợp. Ví dụ, trong số các hoán vị của đa tập hợp ~\{1,1,2,3,3,3,7,8\}~ thì có ~(2,3,1,3,3,7,1,8)~ và ~(8,7,3,3,3,2,1,1)~.

Ta nói hoán vị của một đa tập hợp có thứ tự từ điển nhỏ hơn một hoán vị khác nếu phần tử ở vị trí đầu tiên mà hai hoán vị khác nhau của hoán vị thứ nhất có giá trị nhỏ hơn của hoán vị thứ hai. Tất cả các hoán vị của một đa tập hợp cho trước có thể được đánh số theo thứ tự từ điển tăng dần bắt đầu từ 1. Viết chương trình đọc vào một hoán vị của một đa tập hợp và một số nguyên dương m, xác định phần dư của thứ tự của hoán vị đó khi chia cho m.

Input

Dòng đầu tiên chứa hai số nguyên n và m (~1 \leq n \leq 300 000~, ~2 \leq m \leq 10^{9}~ ), cách nhau bởi khoảng trắng cho biết kích thước của đa tập hợp và số ~m~. Dòng thứ hai chứa n số nguyên dương ~a_{i}~ (~1 \leq a_{i} \leq 300 000~) cách nhau bởi khoảng trắng thể hiện một hoán vị của đa tập hợp.

Output

In ra một số nguyên duy nhất là phần dư của thứ tự của hoán vị khi chia cho ~m~.

Sample Input

4 1000
2 1 10 2

Sample Output

5

Note

Các hoán vị nhỏ hơn (theo thứ tự từ điển) hoán vị đã cho là ~(1,2,2,10), (1,2,10,2), (1,10,2,2)~ và ~(2,1,2,10)~.


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.