각 학생이 우선순위 순서로 카메라, 캠코더, 컴퓨터를 빌려 하위 과제를 수행하는 상황을 사건 기반으로 시뮬레이션하고, 모든 학생이 마지막 하위 과제를 끝내는 시각을 구한다.
어려움8시뮬레이션힙그리디정렬아직 제출이 없습니다시간 제한4초메모리 제한512 MB그래픽 디자인 수업을 듣고 있다. 반 학생 모두 기말 프로젝트를 끝내야 한다. 강사는 카메라, 캠코더, 슈퍼컴퓨터 세 종류의 장비를 빌려준다.
프로젝트 하나는 여러 개의 세부 과제로 이루어지고, 학생은 세부 과제를 정해진 순서대로 끝낸다. 세부 과제 구성은 학생마다 다를 수 있다. 세부 과제 하나에는 카메라, 캠코더, 슈퍼컴퓨터가 필요할 수도 있고 아무 장비도 필요 없을 수도 있어서, 필요한 장비 조합은 8가지다. 세부 과제마다 우선순위를 나타내는 번호가 붙어 있다.
어떤 세부 과제는 필요한 장비가 모두 남아 있고 그 학생이 앞선 세부 과제를 전부 끝냈을 때 시작할 수 있다. 시작할 수 있는 세부 과제 중에서는 우선순위가 가장 높은 것이 먼저 시작한다. 학생은 세부 과제에 필요한 장비를 빌리고, 과제를 끝내면 반납한다.
한 세부 과제가 시작해 장비를 빌려 간 뒤에도 시작할 수 있는 세부 과제가 남아 있으면, 그중 우선순위가 가장 높은 것이 이어서 시작한다. 그래서 여러 세부 과제가 같은 시각에 시작하기도 한다. 반대로 아직 끝내지 못한 학생이 모두 장비 반납을 기다리느라 아무 세부 과제도 시작하지 못하는 순간도 있다. 각 학생의 세부 과제 순서는 고정되어 있다. 뒤쪽 세부 과제의 우선순위가 더 높더라도 첫 번째 세부 과제를 끝낸 다음에 두 번째를 하는 식으로 순서를 지킨다.
학생이 시각 x에 세부 과제를 시작했고 그 과제에 t만큼의 시간이 걸린다면, 과제는 시각 x+t에 끝나고 학생은 빌린 장비를 그때 반납한다. 그 장비는 시각 x+t부터 다시 빌릴 수 있고, 학생도 위의 장비 여유와 우선순위 규칙에 따라 시각 x+t부터 다음 세부 과제를 시작할 수 있다. 카메라, 캠코더, 슈퍼컴퓨터는 한 대를 동시에 두 학생이 쓰지 못한다. 뒤쪽 세부 과제에 필요한 장비가 남아 있어도 지금 차례인 세부 과제의 장비가 모자라면 기다려야 한다. 세부 과제를 순서대로 해야 하기 때문이다.
각 학생이 마지막 세부 과제를 끝내는 시각을 구하라.
첫째 줄에 반 학생 수 n (1≤n≤1000)이 주어진다. 둘째 줄에 카메라 수 a (1≤a≤1000), 캠코더 수 b (1≤b≤1000), 슈퍼컴퓨터 수 c (1≤c≤1000)가 주어진다. 셋째 줄에 학생마다 끝내야 하는 세부 과제 수 d1,…,dn (1≤di≤250)이 주어진다.
이어서 학생 i마다 di개의 줄이 그 학생이 끝내는 순서대로 주어진다. 각 줄에는 세부 과제에 걸리는 시간 t (1≤t≤1000000), 세부 과제의 우선순위 p (1≤p≤1000000), 그리고 서로 다른 문자열이 0개에서 3개까지 주어진다. 각 문자열은 Camera, Camcorder, Computer 중 하나다.
우선순위는 모두 다르다.
각 학생이 마지막 세부 과제를 끝내는 시각을 입력에 주어진 학생 순서대로 한 줄에 공백 하나로 구분해 출력한다.