Why Did the Cow Cross the Road 4
농부 존의 소들은 길을 안전하게 건너는 방법을 배우려고 합니다. 소들은 옛날 농담인 "닭이 길을 건넌 이유"를 떠올리며, 닭들이 길 건너기 전문가일 것이라 생각하고 도움을 청하러 닭들을 찾아갔습니다.
하지만 닭들은 매우 바쁜 생명체이기 때문에 소들을 도와줄 시간이 한정되어 있습니다. 농장에는 1번부터 C번까지 번호가 매겨진 C마리의 닭이 있습니다.
각 닭 i는 정확히 지정된 시간 T_i에만 소를 도와줄 수 있습니다. 반면, 급할 것이 없는 소들은 일정에 여유가 좀 더 있습니다.
농장에는 1번부터 N번까지 번호가 매겨진 N마리의 소가 있으며, 소 j는 시간 A_j와 B_j 사이(A_j ≤ T_i ≤ B_j)에 길을 건널 수 있습니다.
"두 명씩 짝을 짓는 시스템"이 가장 좋은 방법이라고 생각한 소 j는 자신을 도와줄 닭 i를 찾고 싶어 합니다.
닭 i와 소 j의 일정이 서로 호환되려면, 닭의 시간 T_i가 소의 이동 가능 시간 범위 내에 있어야 합니다. 즉, A_j ≤ T_i ≤ B_j를 만족해야 합니다.
각 소는 최대 한 마리의 닭과만 짝을 이룰 수 있고, 각 닭 또한 최대 한 마리의 소와만 짝을 이룰 수 있다고 할 때, 가능한 한 많은 소-닭 쌍을 만들려고 합니다.
만들 수 있는 최대 쌍의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 닭의 수 C와 소의 수 N이 공백을 사이에 두고 주어진다. (1 ≤ C, N ≤ 20,000)
다음 C개의 줄에는 닭들의 시간 T_1, ..., T_C가 한 줄에 하나씩 주어진다.
다음 N개의 줄에는 각 소의 이동 가능 시작 시간 A_j와 종료 시간 B_j가 공백을 사이에 두고 주어진다.
주어지는 모든 A, B, T 값은 1,000,000,000 이하의 음이 아닌 정수입니다. (서로 중복될 수 있음)
출력
만들 수 있는 소-닭 쌍의 최대 개수를 출력한다.
제약 조건
- 1 ≤ C ≤ 20,000
- 1 ≤ N ≤ 20,000
- 0 ≤ T_i, A_j, B_j ≤ 1,000,000,000
예제 입력 1
5 4
7
8
6
2
9
2 5
4 9
0 3
8 13
예제 출력 1
3
출처
USACO 2017 February Contest, Silver
코멘트