Bedao Grand Contest 14 - ZERONE

Xem dạng PDF

Gửi bài giải


Điểm: 0,40 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Tìm số dãy nhị phân ~s~ thỏa mãn tất cả các điều kiện sau:

  • ~s~ chứa ít nhất ~1~ chữ số ~0~ và ~1~ chữ số ~1~.

  • ~s~ chứa tối đa ~a_0~ chữ số ~0~ và ~a_1~ chữ số ~1~.

  • Khi chia ~s~ thành các đoạn liên tiếp chứa toàn chữ số ~0~ hoặc ~1~, độ dài các dãy chứa toàn chữ số ~0~ không nhỏ hơn ~b_0~ và độ dài các dãy chứa toàn chữ số ~1~ không nhỏ hơn ~b_1~.

Ví dụ với ~b_0 = 3~ và ~b_1 = 2~ thì:

  • ~1100001111000~ = [~11~, ~0000~, ~1111~, ~000~] là dãy thoả mãn

  • ~00011100~ = [~000~, ~111~, ~00~] không thoả mãn, do đoạn con ~00~ có độ dài nhỏ hơn ~b_0~.

In ra kết quả ~\text{mod}~ ~10^9 + 7~.

Input

Dòng đầu tiên gồm hai số ~a_0~ và ~a_1~ (~1 \leq a_0, a_1 \leq 10^6~), số chữ số tối đa của ~0~ và ~1~.

Dòng thứ hai gồm hai số ~b_0~ và ~b_1~ (~1 \leq b_0 \leq a_0~, ~1 \leq b_1 \leq a_1~).

Output

Ghi ra một số duy nhất là đáp án của đề bài.

Scoring

Subtask Điểm Giới hạn
1 ~10~ ~1 \leq a_0, a_1 \leq 10~
2 ~20~ ~1 \leq a_0, a_1 \leq 300~
3 ~20~ ~1 \leq a_0, a_1 \leq 3000~
4 ~50~ Không có ràng buộc gì thêm

Sample Input 1

7 13
7 12

Sample Output 1

4

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    joelgun14  đã bình luận lúc 27, Tháng 10, 2023, 18:30 sửa 5

    There is an edge case which is not tested in the test cases:

    1000000 1000000

    1 1

    This might cause a suboptimal solution to pass