Trung bình cộng

Xem dạng PDF

Gửi bài giải


Điểm: 0,70 (OI)
Giới hạn thời gian: 1.2s
Giới hạn bộ nhớ: 1G
Input: TRUNGBINHCONG.INP
Output: TRUNGBINHCONG.OUT

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Bạn được cho hai mảng có độ dài ~n~ .

  • Phần tử thứ ~i~ của mảng thứ nhất là ~a_i~ .
  • Phần tử thứ ~i~ của mảng thứ hai là ~b_i~ .

Một cách chia cả hai mảng thành các mảng con không rỗng được gọi là tốt nếu thỏa mãn các điều kiện sau:

  • Mỗi phần tử thuộc đúng một mảng con duy nhất.
  • Số lượng mảng con của cả hai mảng bằng nhau, tức là nếu mảng thứ nhất được chia thành đúng ~k~ mảng con, thì mảng thứ hai cũng phải được chia thành đúng ~k~ mảng con.
  • Với mọi ~1 \leq i \leq k~, trung bình cộng của mảng con thứ ~i~ bên trái mảng thứ nhất phải nhỏ hơn hoặc bằng trung bình cộng của mảng con thứ ~i~ bên trái mảng thứ hai.

Yêu cầu: Tính số cách để chia cả hai mảng thành các mảng con không rỗng thỏa mãn các điều kiện trên. Kết quả phải được chia dư với ~10^9 + 7~. Hai cách được xem là khác nhau nếu số lượng mảng con khác nhau hoặc nếu một phần tử thuộc về mảng con khác nhau.

Dữ liệu vào từ tệp văn bản: TRUNGBINHCONG.INP

  • Dòng đầu tiên chứa số nguyên ~n~ ~(1 \leq n \leq 500)~.
  • Dòng tiếp theo chứa ~n~ số nguyên ~a_1, a_2, \dots, a_n~ ~(1 \leq a_i \leq 10^6)~.
  • DDòng cuối cùng chứa ~N~ số nguyên ~b_1, b_2, \dots, b_n~ ~(1 \leq b_i \leq 10^6)~.

Kết quả ghi ra tệp văn bản: TRUNGBINHCONG.OUT

  • In ra số cách chia mảng thỏa mãn các điều kiện, chia dư với ~10^9 + 7~.

Scoring

  • Subtask ~1~ (~20\%~ số điểm): ~n \le 10~
  • Subtask ~2~ (~30\%~ số điểm): ~n \le 80~
  • Subtask ~3~ (~30\%~ số điểm): ~n \le 300~
  • Subtask ~4~ (~20\%~ số điểm): Không giới hạn gì thêm.

Example

Sample Input 1
3
1 3 2
2 2 2
Sample Output 1
3

Note

Ba cách hợp lệ là:

  • Chia mảng thứ nhất thành ~[1, 3], [2]~ và mảng thứ hai thành ~[2, 2], [2]~.
  • Chia mảng thứ nhất thành ~[1, 3], [2]~ và mảng thứ hai thành ~[2], [2, 2]~.
  • Chia mảng thứ nhất thành ~[1, 3, 2]~ và mảng thứ hai thành ~[2, 2, 2]~.