UOJ Logo

NOI.AC

1S 512MB
Statistics

题目描述

给定一个长度为 $n$ 的排列 $p$ 和一个长度为 $n$ 的数组 $q$ 。你可以进行如下操作任意多次(包括 $0$ 次):选择两个下标 $i$,$j$ ,交换 $p_i$ 和 $p_j$ 。

求有多少种操作完后的排列满足 $p$ 中的每个位置小于等于 $q$ 中的对应位置。即,$\forall i\in[1,n], p_i\leq q_i$ 。你需要输出总数对 $10^9+7$ 取模后的结果。

输入格式

第一行一个整数 $n$。

第二行 $n$ 个互不相同的整数,代表排列 $p$ 。

第三行 $n$ 个整数,代表数组 $q$ 。

输出格式

一行一个整数,表示答案对 $10^9+7$ 取模后的结果

输入样例1

4
4 3 2 1
4 4 2 2

输出样例1

4

输入样例2

5
1 2 3 4 5
1 1 3 5 5

输出样例2

0

对于样例$1$,可能的排列有$[3,4,1,2]$,$[4,3,1,2]$,$[3,4,2,1]$,$[4,3,2,1]$。

对于样例$2$,因为只有一个$1$,所以第一个和第二个位置有一个位置会无法放置,答案为$0$。

数据范围

对于$40\%$的数据,$n\leq 10$;

对于$50\%$的数据,$n\leq 20$;

对于$60\%$的数据,$n\leq 10^3$;

对于另外$20\%$的数据,数组 $q$ 中整数互不相同。

对于所有数据,$1\leq n\leq 10^5$,$1\leq p_i,q_i\leq n$。

点此下载