思路:排序 + LIS。他的本质是算一个二维最长严格递增子序列,然后再用小红本身的H和A,去判断是否能够战胜最大的二维严格递增子序列结尾。如果可以的话,就更新ans = max(ans, dp[i]),最终输出ans即可

注意:这里排序是为了贪心的得到更长的二维最长严格递增子序列,而且题目只限制了h, a的值关系,位置可以改变

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def solve():
    n, H, A = LII()
    h = LII()
    a = LII()
    nums = list(zip(h, a))
    nums.sort()

    dp = [0] * n
    for i in range(n):
        for j in range(i):
            if nums[i][0] > nums[j][0] and nums[i][1] > nums[j][1]:
                dp[i] = fmax(dp[i], dp[j])
        dp[i] += 1

    ans = 0
    for i in range(n):
        if H > nums[i][0] and A > nums[i][1]:
            ans = fmax(ans, dp[i])
    print(ans)

t = 1
# t = II()
for _ in range(t):
    solve()