VOI 21 Bài 1 - Tặng quà

View as PDF

Submit solution


Points: 0.50 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Suggester:
Problem source:
Kỳ thi Học sinh giỏi Quốc gia 2021 - Ngày 1
Problem types
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

In case the statement didn't load correctly, you can download the statement here: Statement

Nodel sắp tới, Ông Già Tuyết đã chuẩn bị ~2n~ món quà cho các bạn nhỏ. Các món quà có màu sắc đôi một khác nhau và có mã màu từ ~1~ đến ~2n~. Khi cho các món quà vào túi, Ông đã đưa ra các món quà vào theo một thứ tự mà nếu lấy ra, các món quà sẽ có mã màu lần lượt là ~c_1, c_2, \dotsc, c_{2n}~ (dãy ~c_1, c_2,\dotsc, c_{2n}~ là một hoán vị của ~1, 2, \dotsc, 2n~).

Ông Già Tuyết dự định tặng quà cho ~m (m \le n)~ bạn nhỏ, mỗi bạn sẽ dược nhận hai món quà sau hai lượt tặng. Các bạn nhỏ đứng thành một hàng và Ông sẽ đi từ đầu hàng đến cuối hàng để lần lượt tặng quà cho từng bạn. Khi đứng trước một bạn nhỏ để tặng quà, Ông lần lượt lấy từng món quà ra cho tới khi lựa chọn được một món quà phù hợp và tặng bạn nhỏ, các món quà không được lựa chọn sẽ được cất đi và không được dùng để tặng quà. Khi bạn nhỏ thứ ~m~ ở cuối hàng đã được nhận quà, Ông sẽ di chuyển về đầu hàng để tặng quà lượt thứ hai tương tự như lượt thứ nhất.

Ông được biết, các bạn nhỏ luôn mong muốn nhận được hai món quà mà chênh lệch mã màu của hai món quà đó không vượt quá ~d~. Với mong muốn mang lại nhiều niềm vui cho các bạn nhỏ, Ông quyết định việc tặng quà sẽ phải đảm bảo tất cả các bạn nhỏ đều nhận được hai món quà mà chênh lệch mã màu không vượt quá ~d~.

Một cách hình thức, gọi ~m~ là số lượng bạn nhỏ được quà, Ông cần chọn ra dãy ~2m~ chỉ số ~1 \le i_1 < i2 < \dotsc < i_m < i_{m + 1} < \dotsc i_{2m} \le 2n~ sao cho ~\left|c_{i_k} - c_{i_{m + k}}\right| \le d~ với mọi ~1 \le k \le m~.

Ông Già Tuyết biết rằng, có thể không tồn tại cách chọn được ~2m~ chỉ số thỏa mãn, điều đó cũng có nghĩa là không thể tặng quà như mong muốn cho cả ~m~ bạn nhỏ. Do đó, với một số nguyên dương ~d~ và thứ tự các món quà lấy ra có mã màu lần lượt là ~c_1, c_2, \dotsc, c_{2m}~, Ông muốn tính số lượng nhiều nhất các bạn nhỏ mà Ông có thể tặng quà.

Yêu cầu: Hãy giúp Ông Già Tuyết tính số lượng nhiều nhất các bạn nhỏ mà Ông có thể tặng quà đáp ứng điều kiện nêu trên.

Dữ liệu

Vào từ đầu vào chuẩn (không phải từ file NOEL.INP):

  • Dòng thứ nhất chứa hai số nguyên dương ~n~ và ~d (d \le 5)~.
  • Dòng thứ hai chứa ~2n~ số nguyên dương ~c_1, c_2, \dotsc, c_{2n}~ là mã màu của các món quà lần lượt được lấy ra.

Các số trên cùng một dòng cách nhau bởi dấu cách.

Kết quả

Ghi ra đầu ra chuẩn (không phải ra file NOEL.OUT) một số nguyên duy nhất là số lượng nhiều nhất các bạn nhỏ mà Ông Già Tuyết có thể tặng quà.

Ràng buộc

  • Có ~40\%~ số test tương ứng với ~40\%~ số điể của bài thỏa mãn ~n \le 10~;
  • ~40\%~ số test khác ứng với ~40\%~ số điểm của bài thỏa mãn ~n \le 100~;
  • ~20\%~ số test còn lại ứng với ~20\%~ số điểm của bài thỏa mãn ~n \le 1000~.

Ví dụ

Input
3 1
1 5 6 3 4 2
Output
2
Giải thích

Ông Già Tuyết có thể tặng tối đa cho 2 bạn nhỏ.

  • Lượt thứ nhất, món quà có mã màu 5 tặng bạn thứ nhất, món quà có mã màu 3 tặng bạn thứ hai.
  • Lượt thứ hai, món quà có mã màu 4 tặng bạn thứ nhất và món quà có mã màu 2 tặng bạn thứ hai.

Comments

Please read the guidelines before commenting.



  • -7
    NguyenLeDuy  commented on Nov. 19, 2024, 1:08 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -7
    NguyenLeDuy  commented on Nov. 19, 2024, 1:08 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -7
    NguyenLeDuy  commented on Nov. 19, 2024, 1:08 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • 6
    huyleee  commented on March 15, 2024, 2:10 p.m. edit 3

    bài này hay quá


  • -60
    GiaBaomtp12  commented on Sept. 15, 2023, 1:10 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.