Sắp xếp bằng các dãy con

Đề bài

Mô tả

Cho một dãy a1,a2,,an gồm n số nguyên đôi một khác nhau.

Ta muốn chia dãy này thành nhiều nhất các dãy con sao cho: nếu sắp xếp các phần tử trong mỗi dãy con theo thứ tự tăng dần (giữ nguyên vị trí của các phần tử không thuộc dãy con đó), thì toàn bộ dãy a trở thành dãy tăng dần.

Nói cách khác, một dãy con là một tập các vị trí. Khi sắp xếp một dãy con, các giá trị nằm tại những vị trí thuộc dãy con đó được xếp lại theo thứ tự tăng dần vào chính những vị trí ấy; các giá trị còn lại không đổi. Mỗi phần tử của dãy phải thuộc đúng một dãy con.

Hãy tìm số dãy con tối đa và chỉ ra một cách chia hợp lệ.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n - độ dài của dãy.
  • Dòng thứ hai chứa n số nguyên khác nhau a1,a2,,an.

Dữ liệu ra

  • Dòng đầu in ra số dãy con tối đa k.
  • Trong k dòng tiếp theo, mô tả từng dãy con theo định dạng: số phần tử ci của dãy con, tiếp theo là ci số nguyên là chỉ số (tính từ 1) của các phần tử thuộc dãy con đó.

Các chỉ số trong một dãy con có thể được in theo thứ tự bất kỳ, và các dãy con cũng có thể được in theo thứ tự bất kỳ. Mỗi chỉ số từ 1 đến n phải xuất hiện đúng một lần trong toàn bộ kết quả. Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Ràng buộc

  • 1n105
  • 109ai109, các ai đôi một khác nhau.

Ví dụ

Input Output Giải thích
6
3 2 1 6 5 4
4
2 1 3
1 2
2 4 6
1 5
Sắp xếp dãy con {1,3} (giá trị 3,1) cho 123654. Dãy con {2} không đổi. Sắp xếp {4,6} (giá trị 6,4) cho 123456. Không thể chia thành nhiều hơn 4 dãy con.
6
83 -75 -49 11 37 62
1
6 1 2 3 4 5 6
Dãy đã được sắp xếp tăng dần, nên mọi phần tử buộc phải nằm trong cùng một dãy con; không thể chia nhỏ hơn.
3
3 2 1
2
2 1 3
1 2
Sắp xếp dãy con {1,3} (giá trị 3,1) cho 123. Phần tử ở vị trí 2 đã đúng chỗ.

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