아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

배정 최적화

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

요약
각 부품의 소요 시간과 부품이 배정된 직원 정보가 주어질 때, 두 직원이 부품을 하나씩 교환하여 두 사람의 합계 최댓값을 줄이는 교환의 수를 센다.
난이도

보통10점 중 7점

유형
정렬, 투 포인터, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

회사 <<QQQ>>에는 nn명의 직원이 있다. 이 회사의 새 프로젝트는 mm개의 독립적인 부분으로 이루어져 있다. 관리자는 프로젝트의 각 부분을 수행하는 데 필요한 시간을 측정했다(이 시간은 그 부분을 누가 수행하든 변하지 않는다). 그런 다음 mm개의 부분을 nn명의 직원에게 적당히 배정했다. 그 결과 일부 직원은 다른 직원보다 업무를 수행하는 데 더 많은 시간을 써야 한다(더 많은 일을 맡았기 때문이다).

그래서 관리자는 업무 배정을 다음과 같이 개선하기로 했다. 서로 다른 두 직원을 고르고, 첫 번째 직원에게 배정된 프로젝트의 한 부분과 두 번째 직원에게 배정된 한 부분을 고른다. 그런 다음 첫 번째 직원에게 배정된 부분은 두 번째 직원에게, 두 번째 직원에게 배정된 부분은 첫 번째 직원에게 배정한다. 이 작업의 결과로 첫 번째 직원과 두 번째 직원의 업무 수행 시간의 최댓값이 줄어들면, 이 작업을 최적화 작업이라고 부른다.

예를 들어 프로젝트가 수행 시간 3,6,4,8,23, 6, 4, 8, 2인 다섯 부분으로 이루어져 있고 회사에 세 명의 직원이 있다고 하자. 배정이 다음과 같다고 하자. 첫 번째 직원은 부분 11과 22 (총 시간 3+6=93 + 6 = 9), 두 번째 직원은 부분 44 (총 시간 88), 세 번째 직원은 부분 33과 55 (총 시간 4+2=64 + 2 = 6). 이때 첫 번째 직원에게 배정된 첫 번째 일을 세 번째 직원에게, 세 번째 직원에게 배정된 다섯 번째 일을 첫 번째 직원에게 배정하면 첫 번째 직원의 총 시간은 6+2=86 + 2 = 8, 세 번째 직원의 총 시간은 3+4=73 + 4 = 7이 된다. max⁡(9,6)>max⁡(8,7)\max(9, 6) > \max(8, 7)이므로 이 작업은 최적화 작업이다.

회사의 직원 수, 프로젝트의 부분 수, 각 부분을 수행하는 데 필요한 시간, 부분의 직원별 배정이 주어진다. 주어진 배정에서 가능한 서로 다른 최적화 작업의 수를 구해야 한다.

입력

첫째 줄에는 두 자연수 nn과 mm (1≤n,m≤1051 \le n, m \le 10^5)이 주어진다. nn은 회사의 직원 수, mm은 프로젝트의 부분 수다. 둘째 줄에는 mm개의 자연수가 주어지며, ii번째 수는 ii번째 부분을 수행하는 데 필요한 시간이다(부분은 11번부터 번호가 매겨진다). 부분의 수행 시간은 10910^9을 넘지 않는다. 다음 nn개의 줄에는 부분의 직원별 배정이 주어진다. 각 줄에는 해당 직원이 받은 부분의 수와 그 번호가 주어진다.

출력

최적화 작업의 수를 출력한다.

힌트

두 번째 예에서는 어떤 작업이든 최적화 작업이다.

예제2

  1. 예제 1

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

    입력
    2 4
    1 2 3 4
    2 1 2
    2 3 4
    
    예상 출력
    4