다중 프로세서 스케줄링
시간 제한3초메모리 제한128 MB
각 N개의 순차 프로시저로 이루어진 두 애플리케이션이 프로세서를 공유할 때, 두 애플리케이션이 모두 끝나는 최소 시간을 구합니다.
문제
다중 프로세서 컴퓨터에서 두 개의 응용 프로그램이 실행된다. 각 응용 프로그램 ()는 번부터 번까지 번호가 매겨진 개의 프로시저로 이루어지며, 이 프로시저들은 반드시 의 순서대로 차례로 실행되어야 한다. 프로시저는 쌍 로 나타내며, 는 응용 프로그램을, 은 응용 프로그램 안에서의 순서를 뜻한다. 프로시저 는 오직 프로세서 에서만 실행할 수 있고, 실행에는 초가 걸린다.
두 응용 프로그램의 모든 프로시저를 프로세서에 배치하여, 두 응용 프로그램 중 마지막 프로시저가 끝나는 시각(메이크스팬, makespan)을 최소로 만들어라. 두 응용 프로그램은 모두 시각 부터 스케줄링할 수 있다. 올바른 스케줄은 다음 규칙을 지켜야 한다.
- 프로시저 가 프로세서 에서 실행을 시작하면, 끝날 때까지 중간에 멈출 수 없다.
- 한 프로세서는 같은 시각에 최대 한 개의 프로시저만 실행할 수 있지만, 서로 다른 프로세서는 프로시저를 동시에 병렬로 실행할 수 있다.
- 인 프로시저 는 프로시저 이 끝나는 시각 또는 그 이후의 임의의 시각에 시작할 수 있다.
- 시각 에 시작한 프로시저는 시각 에 끝난다.
두 응용 프로그램의 프로시저 정보가 주어질 때, 가능한 최소 메이크스팬을 구하여라.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에는 각 응용 프로그램의 프로시저 개수 ()이 주어진다. 이어지는 개의 줄에는 첫 번째 응용 프로그램이 주어지며, 그중 번째 줄에는 두 정수 와 가 공백으로 구분되어 주어진다. 그다음 개의 줄에는 같은 형식으로 두 번째 응용 프로그램의 와 가 주어진다.
모든 값은 과 을 만족한다. 와 이 같을 수도 있음에 유의하라. 두 프로시저가 같은 프로세서를 사용하면 겹치는 시간 구간에 실행될 수 없다. 같은 응용 프로그램의 프로시저는 이미 순차적으로 실행되므로, 이 제약은 서로 다른 두 응용 프로그램 사이에서만 의미가 있다.
출력
각 테스트 케이스마다 최소 메이크스팬을 한 줄에 하나씩 출력한다. 답은 입력에 주어진 테스트 케이스의 순서와 같은 순서로 출력한다.