CF1009A Game Shopping

题目描述

Maxim 想在本地游戏商店购买一些游戏。商店里有 $n$ 款游戏,第 $i$ 款游戏的价格为 $c_i$。 Maxim 的钱包可以表示为一个整数数组。他的钱包里有 $m$ 张钞票,第 $j$ 张钞票的面值为 $a_j$。 商店里的游戏从左到右排列,Maxim 会按照这个顺序依次尝试购买每一款游戏。 当 Maxim 站在商店的第 $i$ 个位置时,他会从钱包里取出第一张钞票(如果钱包已经空了,则直接跳到下一个位置),并尝试用这张钞票购买第 $i$ 款游戏。在尝试购买完第 $n$ 款游戏后,Maxim 离开商店。 只有当钱包中第一张钞票的面值大于等于第 $i$ 款游戏的价格时,Maxim 才能买下第 $i$ 款游戏。如果成功购买,则这张钞票会从钱包中消失,下一张钞票成为新的第一张。否则,Maxim 会把这张钞票留在钱包中(它仍然是第一张),然后继续尝试购买下一款游戏。 例如,对于数组 $c = [2, 4, 5, 2, 4]$ 和数组 $a = [5, 3, 4, 6]$,过程如下:Maxim 用第一张面值为 $5$ 的钞票买下了第一款游戏,这张钞票消失,第二张面值为 $3$ 的钞票成为第一张;然后 Maxim 发现第二款游戏 $c_2 > a_2$,无法购买,第三款游戏同理;接着他用面值为 $a_2$ 的钞票买下了第四款游戏,第三张钞票成为第一张;最后他用面值为 $a_3$ 的钞票买下了第五款游戏。 你的任务是计算 Maxim 最终能买下多少款游戏。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 1000$),分别表示游戏的数量和 Maxim 钱包中钞票的数量。 第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$($1 \le c_i \le 1000$),其中 $c_i$ 表示第 $i$ 款游戏的价格。 第三行包含 $m$ 个整数 $a_1, a_2, \dots, a_m$($1 \le a_j \le 1000$),其中 $a_j$ 表示 Maxim 钱包中第 $j$ 张钞票的面值。

输出格式

输出一个整数,表示 Maxim 能买下的游戏数量。

说明/提示

第一个样例已在题目描述中详细说明。 第二个样例中,Maxim 钱包中第一张钞票的面值小于商店中所有游戏的价格,因此他一款游戏也买不了。 第三个样例中,Maxim 钱包中钞票的面值足够大,可以买下遇到的所有游戏,直到钱包里的钞票用完为止。 由 ChatGPT 4.1 翻译