canuc80k0713·14/50

Chọn Bộ Bài Cân Đối

Nộp bài trên LQDOJ

Bài 07 · Backtracking

Có bài, bài có độ khó . Chọn một tập gồm ít nhất hai bài sao cho tổng độ khó nằm trong đoạn và hiệu giữa độ khó lớn nhất với nhỏ nhất trong tập không nhỏ hơn . Hãy đếm số tập thỏa mãn.

Input

  • Dòng đầu chứa bốn số . Dòng thứ hai chứa số .

Output

  • In số tập bài hợp lệ.

Constraints

  • .
  • .
  • .
  • .

Scoring

  • Subtask (): .
  • Subtask (): Không có giới hạn bổ sung.

Example

Test 1

Input

5 21 61 19
1 10 20 30 40

Output

13

Giải thích: Tập có tổng và độ chênh , nên hợp lệ; các tập khác được kiểm tra theo cùng ba điều kiện. Kết quả là tổng số tập con đạt đồng thời mọi điều kiện.

Lời giải tóm tắt
  • Ý tưởng: Mỗi bài có hai khả năng: chọn hoặc bỏ. Trạng thái cần đủ bốn thống kê của tập đang xây: số phần tử, tổng, nhỏ nhất và lớn nhất.
  • Thuật toán: Đệ quy theo chỉ số bài. Nhánh thứ nhất bỏ bài hiện tại; nhánh thứ hai chọn nó và cập nhật các thống kê. Khi đã xét hết n bài, tăng đáp án nếu tập có ít nhất hai phần tử, tổng thuộc [l,r] và hiệu lớn nhất-nhỏ nhất không nhỏ hơn x. Vì mọi độ khó dương, có thể dừng sớm khi tổng đã vượt r.
  • Tính đúng đắn: Mỗi tập con có đúng một dãy quyết định chọn/bỏ, nên cây duyệt mọi tập đúng một lần. Các thống kê được cập nhật theo định nghĩa và vì thế tại lá chính là thống kê của tập đã chọn. Điều kiện ở lá trùng với ba điều kiện đề bài, do đó số lá được đếm là đáp án.
  • Độ phức tạp: Thời gian O(2^n) và bộ nhớ ngăn xếp O(n).