trang chủ / bài tập / sortitout

Sắp Xếp Từng Phần

Đề bài

Mô tả

N con bò được đánh số từ 1 đến N, đứng thành hàng với thứ tự ban đầu a1,a2,,aN (một hoán vị của 1,2,,N).

Khi "gọi" một con bò, nó sẽ di chuyển bằng cách đổi chỗ với các bò kề nhau theo quy tắc sau: trước tiên nó đi sang phải cho đến khi không còn con nào nhỏ hơn nó ở bên phải; sau đó nó đi sang trái cho đến khi không còn con nào lớn hơn nó ở bên trái. Quá trình này lặp lại cho đến khi bò không di chuyển nữa.

Chọn một tập con các con bò và gọi lần lượt các bò trong tập đó theo thứ tự ID tăng dần (lặp lại nhiều lần cho đến khi tất cả bò được sắp xếp). Mục tiêu là toàn bộ hàng bò đạt thứ tự 1,2,,N.

Hãy tìm tập con có kích thước nhỏ nhất và trong số các tập con nhỏ nhất, in ra tập con thứ K theo thứ tự từ điển nhỏ nhất (sắp xếp theo ID bò tăng dần).

Dữ liệu vào

  • Dòng 1: hai số nguyên NK (1N105, 1K1018)
  • Dòng 2: N số nguyên a1,a2,,aN — hoán vị ban đầu

Dữ liệu ra

  • Dòng 1: kích thước tập con tối thiểu M
  • M dòng tiếp theo: ID các bò trong tập, mỗi dòng một ID, theo thứ tự tăng dần

Ràng buộc

  • 1N105
  • 1K1018
  • Đảm bảo K không vượt quá số tập con tối thiểu thực tế

Ví dụ

Input Output Giải thích
4 1
4 2 1 3
2
1
4
Dãy con không được chọn phải là dãy tăng. LIS của [4,2,1,3] có độ dài 2 (ví dụ: [2,3]). Tập con tối thiểu có 42=2 phần tử. Tập từ điển nhỏ nhất là {1,4} (phần bù của LIS lớn từ điển nhất [2,3]).

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0