trang chủ / bài tập / dima2seq

Dima và Hai Dãy

Đề bài

Mô tả

Cho hai dãy điểm có toạ độ nguyên trên mặt phẳng:

  • Dãy thứ nhất gồm n điểm (a1,1),(a2,2),,(an,n).
  • Dãy thứ hai gồm n điểm (b1,1),(b2,2),,(bn,n).

Bạn cần ghép tất cả 2n điểm từ hai dãy trên thành một dãy duy nhất độ dài 2n sao cho hoành độ (x) của các điểm trong dãy ghép không giảm (theo thứ tự xuất hiện). Mỗi điểm của hai dãy ban đầu phải được sử dụng đúng một lần.

Hai dãy ghép (p1,q1),(p2,q2),,(p2n,q2n)(x1,y1),(x2,y2),,(x2n,y2n) được coi là khác nhau nếu tồn tại chỉ số i (1i2n) sao cho (pi,qi)(xi,yi).

Hãy đếm số dãy ghép phân biệt và in ra phần dư của kết quả khi chia cho số nguyên m.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n (1n105).
  • Dòng thứ hai chứa n số nguyên a1,a2,,an (1ai109).
  • Dòng thứ ba chứa n số nguyên b1,b2,,bn (1bi109).
  • Dòng cuối chứa số nguyên m (2m109+7).

Dữ liệu ra

In ra một số nguyên duy nhất — phần dư của đáp án khi chia cho m.

Ví dụ

Input Output Giải thích
1
1
2
7
1 Chỉ có duy nhất một cách ghép: (1,1),(2,1).
2
1 2
2 3
11
2 Có hai cách ghép: (1,1),(2,2),(2,1),(3,2)(1,1),(2,1),(2,2),(3,2).
2
1 2
1 2
4
1 Hai dãy hoàn toàn trùng nhau theo từng vị trí. Mọi cách ghép đều cho cùng một dãy điểm (1,1),(1,1),(2,2),(2,2), do đó chỉ có 1 dãy phân biệ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