Thời khóa biểu

Đề bài

Mô tả

Một khoa có N nhóm sinh viên, và hành lang giảng đường có M phòng học được đánh số từ 1 đến M. Mỗi ngày mỗi nhóm có hai tiết học liên tiếp, mỗi tiết diễn ra ở một phòng nào đó. Quy ước rằng số hiệu phòng của tiết một của một nhóm không vượt quá số hiệu phòng của tiết hai của nhóm đó.

Một thời khóa biểu là một bộ gồm 2N số: với mỗi nhóm, xác định số hiệu phòng của tiết một và tiết hai. Cho hai dãy X1,X2,,XMY1,Y2,,YM. Đếm số thời khóa biểu hợp lệ thỏa mãn:

  1. Trong tiết một, phòng i chứa đúng Xi nhóm.
  2. Tại mọi tiết (cả tiết một lẫn tiết hai), phòng i chứa không quá Yi nhóm.

Các nhóm được phân biệt với nhau. Hai thời khóa biểu được coi là khác nhau nếu tồn tại một nhóm mà một trong hai số hiệu phòng (tiết một hoặc tiết hai) khác nhau.

In ra kết quả theo modulo 109+7.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên M — số phòng học.
  • Dòng thứ hai chứa M số nguyên X1,X2,,XM.
  • Dòng thứ ba chứa M số nguyên Y1,Y2,,YM.

Dữ liệu ra

  • In ra số thời khóa biểu hợp lệ modulo 109+7.

Ràng buộc

  • 1M100
  • 0Xi100
  • 0Yi100
  • XiYi với mọi i
  • 1Xi1000 (đây cũng là N — số nhóm)

Ví dụ

Input Output Giải thích
3
1 1 1
1 2 3
36 N=3 nhóm, mỗi phòng có đúng 1 nhóm trong tiết một. Có 3!=6 cách phân nhóm cho tiết một. Với mỗi cách, có 6 cách phân nhóm cho tiết hai thỏa mãn ràng buộc số hiệu không giảm và giới hạn Y. Tổng 6·6=36.
3
1 1 1
1 1 1
6 Mỗi phòng chứa tối đa 1 nhóm tại mọi tiết, nên tiết hai của mỗi nhóm phải trùng phòng tiết một. Chỉ còn lại 3!=6 cách phân 3 nhóm vào 3 phòng cho tiết một.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0