trang chủ / đề bài / prevoi19_liondance

Múa lân

Đề bài

Mô tả

Múa Lân là một tiết mục trong lễ hội ăn mừng đội tuyển Việt Nam vô địch AFF Cup 2018. Khi chơi múa lân, hai người trong lốt của một con lân sẽ biểu diễn những tiết mục nhào lộn thăng bằng rất hấp dẫn. Người đứng trước đứng thẳng giữ đầu lân và hai chân có vai trò như hai chân trước của con lân. Người đứng sau cúi xuống lưng người thứ nhất và hai chân có vai trò như hai chân sau của con lân.

Có hai dãy cột, mỗi dãy xếp hàng dọc và đánh số từ 1 tới n, ký hiệu là dãy L và dãy R. Cột thứ i của dãy L và cột thứ i của dãy R gọi là ngang hàng nhau. Trong quá trình biểu diễn, chân trái (trước và sau) của con lân chỉ đặt lên cột ở dãy L còn chân phải của nó chỉ đặt lên cột ở dãy R. Mỗi khi đặt chân, hai chân trước luôn đặt ở hai cột ngang hàng và cũng như vậy, hai chân sau cũng luôn phải đặt ở hai cột ngang hàng.

Ban đầu con lân đứng bằng hai chân sau: chân trái ở cột số 1 dãy L và chân phải ở cột số 1 dãy R (để thực hiện động tác này người đứng sau phải nâng người đứng trước lên), sau đó con lân đặt hai chân trước lên cột 2 của mỗi dãy. Tiếp theo, con lân sẽ lần lượt nhảy qua dãy cột: mỗi bước nhảy, hai chân trước nhảy sang cặp cột ngang hàng kế tiếp cặp cột đang đứng và hai chân sau nhảy vào vị trí hai chân trước vừa đứng. Để tiết mục biểu diễn được an toàn, dãy các cột phải thỏa mãn hai điều kiện sau:

  • Hai cột ở hai vị trí ngang hàng trên hai dãy phải có chiều cao bằng nhau.
  • Chênh lệch độ cao giữa hai cột liên tiếp trong dãy L cũng như chênh lệch độ cao giữa hai cột liên tiếp trong dãy R không được vượt quá Δ (chênh lệch đúng bằng Δ vẫn được phép).

Bạn cần kiểm tra nếu dãy cột không tuân thủ quy tắc trên, bạn cần loại bỏ một số ít nhất các cột và dồn các cột còn lại trong mỗi dãy giữ nguyên thứ tự để được hai dãy cột thỏa mãn điều kiện cho buổi diễn (hai dãy còn lại cùng số cột m; các điều kiện xét trên các cột còn lại sau khi dồn). Cho biết độ cao của các cột trong dãy L sau khi thực hiện công việc (dĩ nhiên đây cũng là độ cao của các cột trong dãy R). Nếu có nhiều phương án tối ưu, chỉ ra phương án có dãy độ cao của các cột mang thứ tự từ điển lớn nhất.

Nói cách khác, cần tìm dãy c1,c2,…,cm dài nhất vừa là dãy con của dãy độ cao L, vừa là dãy con của dãy độ cao R, và thỏa mãn |ct−ct+1|≤Δ với mọi 1≤t<m. Trong các dãy dài nhất, chọn dãy có thứ tự từ điển lớn nhất: dãy c lớn hơn dãy c′ (cùng độ dài) nếu tại vị trí đầu tiên t mà ct≠ct′ ta có ct>ct′. Nếu hai dãy không có độ cao chung nào thì m=0.

Dữ liệu vào

  • Dòng 1 chứa số nguyên dương n và số nguyên dương Δ.
  • Dòng 2 chứa n số nguyên dương, số thứ i là độ cao cột thứ i của dãy L.
  • Dòng 3 chứa n số nguyên dương, số thứ i là độ cao cột thứ i của dãy R.

Các số trên một dòng của input được ghi cách nhau bởi dấu cách.

Dữ liệu ra

  • Dòng 1 ghi số lượng cột còn lại trên mỗi dãy (m).
  • Dòng 2 ghi m số nguyên là độ cao của các cột còn lại trong dãy L, các số phải được liệt kê theo thứ tự từ chiều cao cột đầu tiên đến chiều cao cột cuối cùng (nếu m=0 thì dòng này để trống).

Ràng buộc

  • 1≤n≤4000
  • 1≤Δ≤109
  • Độ cao mỗi cột là số nguyên dương không vượt quá 109.

Subtasks

  • Subtask 1 (20% số điểm): n≤20;
  • Subtask 2 (30% số điểm): n≤100;
  • Subtask 3 (50% số điểm): Không có ràng buộc bổ sung.

Ví dụ

Input Output Giải thích
8 3
2 1 2 3 9 4 5 7
2 3 2 1 7 4 5 9
4
2 3 4 5
Trên mỗi dãy có thể giữ lại 4 cột. Có nhiều phương án giữ lại số cột nhiều nhất với chiều cao của các cột là: (2,1,4,5); (2,2,4,5); (2,3,4,5) trong đó phương án (2,3,4,5) có thứ tự từ điển lớn nhất.
5 4
7 9 1 4 3
7 1 7 1 3
2
7 3
Các độ cao chung là 7,1,3. Không giữ được 3 cột: (7,1,3) có |7−1|=6>4. Hai phương án dài nhất là (1,3) và (7,3) (chênh lệch 4=Δ vẫn hợp lệ); chọn (7,3).
5 3
1 7 9 3 2
8 6 1 9 2
2
1 2
Các độ cao chung là 1,9,2. Các dãy (1,9) và (9,2) đều có chênh lệch lớn hơn 3, nên phương án dài nhất duy nhất là (1,2), dù có thể bắt đầu bằng cột cao 9 nếu chỉ giữ một cột.
3 5
1 2 3
4 5 6
0 Hai dãy không có độ cao chung, phải loại bỏ toàn bộ các cột; dòng thứ hai để trống.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0