Why Did the Cow Cross the Road 4


답안 제출

Points: 15
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C, C++, Python

농부 존의 소들은 길을 안전하게 건너는 방법을 배우려고 합니다. 소들은 옛날 농담인 "닭이 길을 건넌 이유"를 떠올리며, 닭들이 길 건너기 전문가일 것이라 생각하고 도움을 청하러 닭들을 찾아갔습니다.

하지만 닭들은 매우 바쁜 생명체이기 때문에 소들을 도와줄 시간이 한정되어 있습니다. 농장에는 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


코멘트

현재 작성된 코멘트가 없습니다.