멘토 매칭하기

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

요약
학생 실력과 멘토 지도력이 주어질 때 멘토를 학생에게 일대일로 매칭해 실력 최솟값을 최대로 만들고, 그렇게 만드는 매칭의 수를 센다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 조합론, 수학
정답자
아직 제출이 없습니다

문제

학생 NN명, 멘토 MM명이 존재한다. 당신은 학생들의 실력을 높여주기 위해 멘토를 매칭해주려고 한다.

ii번 학생은 실력 A_iA\_i를 가지고 있으며, jj번 멘토는 지도력 B_jB\_j를 가지고 있다. 학생 한 명에게는 최대 한 명의 멘토를 매칭해줄 수 있고, 각 멘토 역시 최대 한 명의 학생을 지도해줄 수 있다. 학생에게 멘토를 매칭하지 않을 수도 있다. 멘토가 매칭된 학생의 실력은 해당 멘토의 지도력만큼 늘어난다.

모든 학생의 실력의 최솟값을 최대화시키는 멘토 매칭 방법의 수를 알아보자.

입력

첫째 줄에 학생의 수 NN, 멘토의 수 MM이 공백으로 구분되어 정수로 주어진다. (1≤N,M≤200,000)(1 \leq N, M \leq 200\\,000)

둘째 줄에 학생의 실력을 나타내는 수열 AA가 공백으로 구분되어 정수로 주어진다. (1≤A_i≤109)(1 \leq A\_i \leq 10^9)

셋째 줄에 멘토의 지도력을 나타내는 수열 BB가 공백으로 구분되어 정수로 주어진다. (1≤B_j≤109)(1 \leq B\_j \leq 10^9)

출력

첫째 줄에 모든 학생의 실력의 최솟값을 최대화하는 멘토 매칭 방법의 수를 1,000,000,007,(109+7)1\\,000\\,000\\,007 \\,(10^9 + 7)으로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

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

    입력
    4 2
    2 5 3 3
    5 10
    
    예상 출력
    8