https://www.acmicpc.net/problem/1092
1️⃣ 매 시간마다 가장 무거운 박스를 들 수 있는 크레인 순으로 가장 무거운 박스부터 나른다.
2️⃣ 나른 박스는 리스트에 제거하며 시간 절약을 위해 크레인 배열과 박스 배열을 내림차순 정렬후 리스트를 순회하며 작업을 수행한다.
if __name__ == '__main__':
N = int(input())
crane_list = map(int, input().split())
M = int(input())
box_list = map(int, input().split())
crane_list = sorted(crane_list, key = lambda x : -x)
box_list = sorted(box_list, key = lambda x : -x)
ans = 0
flag = False
while(True):
if len(box_list) == 0:
break
if crane_list[0] < box_list[0]:
ans = -1
break
flag = False
for crane in crane_list:
temp = 0
if len(box_list) == 0:
ans += 1
flag = True
break
for box in box_list:
if crane >= box:
temp = box
break
# 박스를 없애줌
if temp != 0:
box_list.remove(temp)
if flag:
break
ans += 1
print(ans)