#1592. Dải băng (RIBBON)

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 dãy số A gồm n số nguyên. Bạn cần chia dãy số này thành ít đoạn nhất có thể, sao cho mỗi đoạn thỏa mãn hai điều kiện sau:

  1. Độ dài của mỗi đoạn phải lớn hơn hoặc bằng l .
  2. Chênh lệch giữa giá trị lớn nhất và giá trị nhỏ nhất trong đoạn đó không vượt quá s (tức là \max - \min \le s ).

Hãy tìm số lượng đoạn ít nhất. Nếu không thể chia dãy số thỏa mãn yêu cầu, in ra -1.

Dữ liệu:

  • Dòng đầu tiên chứa ba số nguyên n, s, l ( 1 \le n \le 100,000 , 0 \le s \le 10^9 , 1 \le l \le 100,000 ).
  • Dòng thứ hai chứa n số nguyên a_1, a_2, \dots, a_n ( -10^9 \le a_i \le 10^9 ).

Kết quả:

  • In ra số lượng đoạn ít nhất tìm được, hoặc -1 nếu không có cách chia.

Ví dụ:

Dữ liệu:

7 2 2
1 3 1 2 4 1 2

Kết quả:

3

Dữ liệu:

7 2 2
1 100 1 100 1 100 1

Kết quả:

-1

Giới hạn:

  • Subtask #1: n \le 5000 .
  • Subtask #2: Không có ràng buộc bổ sung.