Điều hướng chính

Nhắn tin NQ Coding

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập hangnguquangngai2425

Chỉnh đốn hàng ngũ

Dễ Quy hoạch độngHeap, Set, Map, ...

  • 100 Điểm
  • 1.0s Thời gian
  • 256M Bộ nhớ
  • 0% Tỉ lệ AC
  • 0 Số AC

Trong cuộc chiến giữa hai bên, Đô đốc Salem nhận thấy quân địch đang trong tình trạng suy kiệt cả về số lượng lẫn chất lượng nên ông đã gấp rút chuẩn bị quân đội để phản công giành chiến thắng. Quân đội của ông có \(n\) người lính, mỗi người lính trong hàng ngũ đều có một chỉ số riêng biệt. Dãy chỉ số của \(n\) người lính là một hoán vị của dãy số nguyên từ \(1\) đến \(n\). Để đoàn quân tinh nhuệ của ông được tối ưu sức mạnh, Salem phải chỉnh đốn lại hàng ngũ sao cho chỉ số của các người lính trong hàng tăng dần.

Salem thường dùng một thuật toán cố định để sắp xếp và chỉnh đốn hàng ngũ. Tuy nhiên thuật toán này lại tốn quá nhiều thời gian nên buộc Salem phải tìm cách sắp xếp khác. May mắn cho ông, tất cả các lính tinh nhuệ của ông đều đã được rèn luyện bài bản, chỉ cần gọi tên thì ngay lập tức chuỗi hành động sau sẽ được những người lính ấy thực hiện:

  • Nếu người lính được gọi có chỉ số lớn hơn người lính đứng kề bên phải thì \(2\) người lính này sẽ đổi chỗ cho nhau và quá trình này sẽ lặp đi lặp lại đến khi không còn người bên phải có chỉ số nhỏ hơn.

  • Ngược lại, nếu người lính được gọi có chỉ số nhỏ hơn người lính đứng kề bên trái thì \(2\) người lính này sẽ đổi chỗ cho nhau và quá trình này sẽ lặp đi lặp lại đến khi không còn người bên trái có chỉ số lớn hơn.
    Mỗi người lính khi được gọi tên sẽ thực hiện chuỗi hành động trên chỉ tốn \(1\) giây.

Salem nhận thấy rằng không nhất thiết phải gọi tên toàn bộ \(n\) người lính mà chỉ cần gọi \(1\) số người trong đó thì toàn bộ hàng ngũ sẽ được sắp xếp. Salem không giỏi tính toán nên ông rất muốn biết xem số lượng người lính tối thiểu ông cần gọi tên là bao nhiêu. Ngoài ra, ông nhận thấy có thể có nhiều tập bé (có cùng số lượng phần tử tối thiểu) thỏa mãn. Là \(1\) người ham học hỏi, Salem tò mò muốn biết tập bé thứ \(K\) trong thứ tự từ điển là tập nào.

Yêu cầu: Hãy cho biết số lượng người lính tối thiểu mà Salem cần gọi tên và tập bé thứ \(K\) trong thứ tự từ điển cần tìm. Tập được so sánh theo dãy chỉ số sắp tăng dần của các phần tử.

Input

Dữ liệu vào:

  • Dòng đầu chứa \(2\) số nguyên \(n\) và \(k\) (\(n \le 10^5\), \(k \le 10^{18}\)).

  • Dòng thứ hai chứa \(n\) số nguyên là hoán vị của dãy số từ \(1\) đến \(n\).
    Dữ liệu đảm bảo luôn có không ít hơn \(K\) tập thỏa mãn. Các số trên cùng một dòng được ghi cách nhau bởi dấu cách.

Ràng buộc:

  • Có \(30\%\) số test có \(n \le 6\) và \(k = 1\).

  • Có \(30\%\) số test tiếp theo có \(n \le 10^5\) và \(k = 1\).

  • Có \(40\%\) số test còn lại không có điều kiện gì thêm.

Output

In ra

  • Dòng đầu chứa số nguyên \(x\) là số lượng người lính cần gọi tên.

  • \(x\) dòng sau, mỗi dòng chứa \(1\) số nguyên thuộc tập bé thứ \(K\) (theo thứ tự tăng dần).

Example

Input:

5 1
3 5 1 4 2

Output:

3
1
2
4

Note

Có nhiều tập bé \(3\) phần tử như \(\{1,2,4\}\), \(\{1,2,5\}, \ldots\) nhưng tập bé thứ \(1\) là \(\{1,2,4\}\).

Chuỗi hành động là:

  • Sau khi gọi tên người lính có chỉ số \(1\) (tức là ở vị trí thứ \(3\) trong dãy ban đầu), dãy trở thành \(1\ 3\ 5\ 4\ 2\).

  • Sau khi gọi tên người lính có chỉ số \(2\), dãy trở thành \(1\ 2\ 3\ 5\ 4\).

  • Sau khi gọi tên người lính có chỉ số \(4\), dãy trở thành \(1\ 2\ 3\ 4\ 5\).
    Như vậy, sau \(3\) lần gọi tên, quân ngũ đã được sắp xếp, và không có cách nào có số lần gọi bé hơn cũng như thứ tự từ điển bé hơn \(1\ 2\ 4\).

Bình luận

Chưa có bình luận nào.