#1667. LỊCH NGỦ (SLEEP)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một hệ thống thời gian gồm h giờ trong một ngày, được đánh số từ 0 đến h-1 . Một ngày bắt đầu tại thời điểm 0 và các giờ hoạt động theo quy tắc số dư (modulo h ).

Bạn cần thực hiện n giấc ngủ liên tiếp. Giấc ngủ thứ i ( 1 \le i \le n ) có độ dài dự kiến là a_i . Với mỗi giấc ngủ thứ i , bạn có quyền lựa chọn thực hiện một trong hai phương án về thời gian ngủ:

  1. Ngủ chính xác a_i giờ.
  2. Ngủ chính xác a_i - 1 giờ.

Giả sử thời điểm bắt đầu giấc ngủ thứ i t_{i-1} , thì thời điểm thức dậy t_i sẽ được tính bằng:

  • Phương án 1: t_i = (t_{i-1} + a_i) \pmod h
  • Phương án 2: t_i = (t_{i-1} + a_i - 1) \pmod h

Biết rằng thời điểm bắt đầu của giấc ngủ đầu tiên ( i=1 ) là t_0 = 0 . Một giấc ngủ thứ i được định nghĩa là "tốt" nếu thời điểm thức dậy t_i thỏa mãn điều kiện l \le t_i \le r .

Yêu cầu: Hãy tìm cách chọn phương án cho từng giấc ngủ trong số n giấc ngủ sao cho tổng số lượng giấc ngủ "tốt" đạt giá trị lớn nhất.

Dữ liệu:

  • Dòng đầu tiên chứa bốn số nguyên n, h, l, r ( 1 \le n, h \le 2000 ; 0 \le l \le r < h ).
  • Dòng thứ hai chứa n số nguyên a_1, a_2, \dots, a_n ( 2 \le a_i \le h ).

Kết quả:

  • In ra một số nguyên duy nhất là số lượng giấc ngủ "tốt" tối đa có thể đạt được.

Ví dụ:

Dữ liệu:

7 24 21 23
16 17 14 20 20 11 22

Kết quả:

3

Giải thích:

  • Một trong các phương án tối ưu là:
    • Giấc 1: Chọn a_1-1 = 15 . Thời điểm thức dậy: (0+15) \pmod{24} = 15 . (Không tốt)
    • Giấc 2: Chọn a_2-1 = 16 . Thời điểm thức dậy: (15+16) \pmod{24} = 7 . (Không tốt)
    • Giấc 3: Chọn a_3 = 14 . Thời điểm thức dậy: (7+14) \pmod{24} = 21 . (Tốt, vì 21 \in [21, 23] )
    • Giấc 4: Chọn a_4 = 20 . Thời điểm thức dậy: (21+20) \pmod{24} = 17 . (Không tốt)
    • Giấc 5: Chọn a_5-1 = 19 . Thời điểm thức dậy: (17+19) \pmod{24} = 12 . (Không tốt)
    • Giấc 6: Chọn a_6 = 11 . Thời điểm thức dậy: (12+11) \pmod{24} = 23 . (Tốt, vì 23 \in [21, 23] )
    • Giấc 7: Chọn a_7 = 22 . Thời điểm thức dậy: (23+22) \pmod{24} = 21 . (Tốt, vì 21 \in [21, 23] )
  • Tổng số giấc ngủ tốt là 3.

Dữ liệu:

5 10 3 6
2 2 2 2 2

Kết quả:

3

Giới hạn:

  • Subtask #1 (20% số điểm): n \le 20; h \le 2000 .
  • Subtask #2 (20% số điểm): n \le 2000; h \le 24 .
  • Subtask #3 (20% số điểm): n, h \le 200 .
  • Subtask #4 (40% số điểm): Không có ràng buộc bổ sung ( n, h \le 2000 ).