CF777B Game of Credit Cards

题目描述

在第四季以后,Sherlock 和 Moriarty 意识到他们之间战斗的愚蠢,并决定以一场平和的信用卡游戏继续他们的较量。 这个游戏的规则很简单:每个玩家带来自己最喜欢的 $n$ 位信用卡。然后,两位玩家轮流依次报出他们卡上的每一位数字。如果两位数字不相等,那么数字较小的那位将被对方弹一下额头(通常用食指做出)。例如,如果 $n=3$,Sherlock 的卡是 $123$,Moriarty 的卡号为 $321$,那么首先 Sherlock 说 $1$,Moriarty 说 $3$,所以 Sherlock 被弹一下。然后他们都说 $2$,没人被弹。最后 Sherlock 说 $3$,Moriarty 说 $1$,所以 Moriarty 被弹一次。 当然,Sherlock 会老实依次报出他卡上的数字,而 Moriarty 作为一个真正的反派,打算作弊——他会以其他顺序报出自己的卡片上的数字(当然他不会改变每个数字出现的总次数)。比如在上面的例子中,Moriarty 可以报 $1,\ 2,\ 3$,这样他就不会被弹,也可以报 $2,\ 3,\ 1$,让 Sherlock 被弹两下。 你的目标是求出 Moriarty 最少会被弹几次(没人喜欢被弹),以及 Moriarty 最大可能让 Sherlock 被弹多少次。注意,这两个目标不同,达到最优结果时 Moriarty 采取的数字顺序可能是不同的。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 1000$),表示 Sherlock 和 Moriarty 所使用的信用卡的位数。 第二行为一串 $n$ 位数字,表示 Sherlock 的信用卡号。 第三行为一串 $n$ 位数字,表示 Moriarty 的信用卡号。

输出格式

首先输出 Moriarty 最少会被弹的次数。然后输出 Moriarty 最多能让 Sherlock 被弹的次数。

说明/提示

第一个样例在题目描述中已经详细解释。在第二个样例中,无论 Moriarty 如何安排数字,他都至少会被弹两次。 由 ChatGPT 5 翻译