적은 시간, 많은 이익
시간 제한1초메모리 제한256 MB
건설할 발전소의 부분집합을 고르는데, 상점은 필요한 발전소가 모두 지어졌을 때만 이익을 준다. 최대 건설 시간을 최소화한 뒤 그 시간 안에서 이익을 최대화한다.
문제
도시 계획가들은 개의 상점이 있는 도시에 개의 공장을 지을 계획을 세웠다. 각 공장은 짓거나 계획 단계로 남겨둘 수 있다.
각 상점은 운영을 위해 정해진 공장 집합의 제품을 필요로 한다. 상점 가 필요로 하는 모든 공장이 지어지면, 그 상점은 단위의 일회성 이익을 즉시 얻는다. 공장을 한 번 지으면 그 공장에 의존하는 모든 상점을 지원할 만큼 충분한 제품을 생산한다.
번째 공장을 짓는 데는 단위의 투자가 필요하고 일이 걸린다. 두 개 이상의 공장을 동시에 지을 수 있으므로, 여러 공장을 짓는 데 걸리는 시간은 각 공장의 건설 시간 중 최댓값이다.
도시 계획가들은 모든 공장을 지을 자원은 충분하지만, 순이익을 내고 싶어 한다. 구체적으로, 운영되는 상점의 총이익에서 지은 공장의 총비용을 뺀 값이 단위 이상이 되도록 공장의 부분집합을 골라 짓거나, 그것이 불가능하다는 것을 알아내려 한다.
먼저, 일 안에 단위 이상의 이익을 낼 수 있는 가장 작은 일수 를 구한다. 그다음, 일 안에 낼 수 있는 가장 큰 이익 를 구한다.
입력
첫째 줄에 세 정수 , , 이 주어진다. 각각 지을 수 있는 공장의 수, 상점의 수, 요구되는 이익이다 (, ).
이어서 개의 줄이 주어진다. 각 줄은 공장 하나를 나타내며 두 정수 와 를 포함한다. 각각 번째 공장의 투자 금액과 건설 시간이다 (, ).
그다음 개의 줄이 주어진다. 각 줄은 상점 하나를 나타내며 정수 로 시작한다 (). 이어서 상점 가 운영되는 데 필요한 공장의 수를 나타내는 정수 가 주어진다 (). 그다음에는 상점 가 운영되는 데 필요한 공장의 번호 , , , 가 서로 다른 개의 정수로 주어진다 ().
출력
조건을 만족하는 계획이 있으면 두 정수 와 를 출력한다. 는 단위 이상의 이익을 낼 수 있는 가장 작은 일수이고, 는 일 안에 낼 수 있는 최대 이익이다.
단위 이상의 이익을 내는 계획이 없으면 "impossible"을 출력한다.