이번 문제는 크레인의 무게 제한과 상자의 무게를 내림차순 정렬한 뒤에 크레인과 상자를 가장 앞에서부터 검사하며 무거운 상자부터 무거운 크레인으로 옮기도록 배정해주고 크레인에 상자를 올릴 때마다 시간을 증가시키는 방식으로 해결하였다.
n=int(input())
crane=list(map(int, input().split()))
m=int(input())
box=list(map(int, input().split()))
crane.sort(reverse=True)
box.sort(reverse=True)
cnt=0
time=0
chk=[False]*m
tmp=[0]*n
if crane[0]<box[0]:
print(-1)
quit()
while cnt<len(box):
for i in range(n):
while tmp[i]<len(box):
if chk[tmp[i]]==False and crane[i]>=box[tmp[i]]:
chk[tmp[i]]=True
tmp[i]+=1
cnt+=1
break
tmp[i]+=1
time+=1
print(time)