건초 1+1 할인

면접 대비

시간 제한1초메모리 제한128 MB

요약
고급 건초 N개를 모두 사고, 각 무료 건초가 자신과 짝지은 고급 건초보다 엄격히 작도록 저급 건초 M개를 최대한 짝지어 N에 더한 값을 출력한다.
난이도

보통10점 중 4점

유형
그리디, 정렬, 투 포인터, 배열
정답자
아직 제출이 없습니다

문제

한 농부가 온라인으로 건초 더미를 사다가 특별 할인을 발견했다. 고급 건초 한 더미를 살 때마다, 그보다 크기가 엄격히 작은 저급 건초 한 더미를 무료로 가져갈 수 있다.

정확히 말하면, 크기가 AA인 고급 건초를 사면 크기가 BB인 저급 건초 하나를 무료로 받을 수 있는데, 이때 반드시 B<AB < A 여야 한다. 모든 건초 더미의 크기는 1≤크기≤1,000,0001 \le \text{크기} \le 1{,}000{,}000 을 만족한다. 농부는 품질과 상관없이 오직 더미의 개수에만 관심이 있다.

고급 건초 NN개 (1≤N≤10,0001 \le N \le 10{,}000) 와 저급 건초 MM개 (1≤M≤10,0001 \le M \le 10{,}000) 의 크기가 주어진다. 농부는 무료 건초를 받지 않고 고급 건초만 따로 살 수도 있지만, 저급 건초는 절대 직접 살 수 없다. 즉 저급 건초는 오직 할인을 통해서만 무료로 얻어야 하며, 산 고급 건초 하나당 무료 저급 건초는 최대 한 개만 받을 수 있다.

농부가 얻을 수 있는 건초 더미의 최대 총 개수를 구하시오.

입력

  • 1번째 줄: 공백으로 구분된 두 정수 NN 과 MM.
  • 2…N+12 \dots N+1번째 줄: i+1i+1번째 줄에는 ii번째 고급 건초의 크기를 나타내는 정수 하나가 주어진다.
  • N+2…N+M+1N+2 \dots N+M+1번째 줄: i+N+1i+N+1번째 줄에는 ii번째 저급 건초의 크기를 나타내는 정수 하나가 주어진다.

출력

  • 1번째 줄: 농부가 얻을 수 있는 건초 더미의 최대 총 개수.

힌트

고급 건초는 많이 살수록 손해가 없으므로 전부 사는 것이 좋다. 그다음에는 서로 다른 고급 건초와 저급 건초를 짝지어 무료 저급 건초의 수를 최대로 만들면 되는데, 각 짝은 저급 건초가 고급 건초보다 엄격히 작아야 한다. 두 목록을 정렬한 뒤, 각 저급 건초를 그보다 큰 고급 건초 중 가장 작은 것과 탐욕적으로 짝지으면 무료 건초 수가 최대가 된다.

예를 들어 고급 건초의 크기가 6,1,36, 1, 3 이고 저급 건초의 크기가 1,5,3,41, 5, 3, 4 라면, 크기 66짜리 고급 건초로 크기 33짜리 저급 건초를, 크기 33짜리 고급 건초로 크기 11짜리 저급 건초를 무료로 받을 수 있다. 크기 11짜리 고급 건초로는 아무것도 받을 수 없다. 따라서 총 3+2=53 + 2 = 5 개가 된다.

예제3

  1. 예제 1

    입력
    3 4
    6
    1
    3
    1
    5
    3
    4
    
    예상 출력
    5
    
  2. 예제 2

    입력
    1 1
    1
    1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1 1
    2
    1
    
    예상 출력
    2