#USACO2326. 牛棚

牛棚

题目描述

Farmer John 有 NN 头奶牛,高度为 a1...aNa_1...a_N

他的牛栏有 NN 个牛棚,高度限制分别为 b1...bNb_1...b_N(例如,如果 b5=17b_5=17,那么一头高度不超过 17 的奶牛可以住在牛棚 5 里)。

Farmer John 有多少种不同的方式安排他的奶牛,使得每头奶牛均住在不同的牛棚里,并且使得每个牛棚的高度限制均得到满足?

输入格式

输入的第一行包含 NN

第二行包含 NN 个空格分隔的整数 a1,a2...aNa_1,a_2...a_N

第三行包含 NN 个空格分隔的整数 b1,b2...bNb_1,b_2...b_N

所有的高度和高度限制均在范围[1,109][1,10^9] 内。

输出格式

输出 Farmer John 可以将每头奶牛安排到不同的牛棚里,使得每个牛棚的高度限制均得到满足的方法数。

注意输出的数量可能需要使用 64 位整数型,例如 C++ 中的 long long。

4
1 2 3 4
2 4 3 4
8

数据范围

1≤N≤20

样例解释

在这个例子中,我们不能将第三头奶牛安排到第一个牛棚里,因为 3=a3>b1=23=a_3 \gt b_1=2

类似地,我们不能将第四头奶牛安排到第一或第三个牛棚里。

一种符合高度限制的安排方式为将奶牛 1 安排到牛棚 1,奶牛 2 安排到牛棚 2,奶牛 3 安排到牛棚 3,奶牛 4 安排到牛棚 4。