Buffcraft
면접 대비시간 제한2초메모리 제한256 MB
직접 버프와 퍼센트 버프를 합쳐 최대 k개 골라 최종 체력을 가장 크게 만듭니다.
문제
브렌다는 롤플레잉 게임 Buffcraft를 한다. Buffcraft에서는 방패, 검, 책 같은 소지품이 캐릭터의 능력치를 바꾸지 않는다. 능력치를 올리는 방법은 캐릭터에게 버프를 거는 것뿐이다.
Buffcraft의 버프는 두 종류다. 직접 버프는 능력치의 기본값을 올리고, 퍼센트 버프는 기본값에 비례하는 만큼 능력치를 올린다. 정확히 말하면 어떤 능력치의 기본값이 이고 강도가 인 직접 버프 개와 강도가 인 퍼센트 버프 개를 걸었다면, 최종 능력치는 이다. 최종 능력치는 소수일 수 있다.
캐릭터의 버프 슬롯은 개뿐이고, 버프를 개보다 많이 걸면 마지막 개만 남는다. 그래서 한 번에 개를 넘게 걸 이유가 없다. 같은 버프를 두 번 걸 수는 없다.
브렌다는 캐릭터를 레이드에 보내기 전에 체력을 최대로 올리려 한다. 가지고 있는 직접 버프와 퍼센트 버프 중에서 체력을 가장 크게 만드는 조합을 골라라.
입력
첫 줄에 네 정수 , , , 가 주어진다. 각각 캐릭터의 기본 체력, 버프 슬롯의 개수, 쓸 수 있는 직접 버프의 개수, 쓸 수 있는 퍼센트 버프의 개수다.
둘째 줄에 직접 버프의 강도 가 개 주어진다.
셋째 줄에 퍼센트 버프의 강도 가 개 주어진다.
입력의 모든 수는 0 이상 50000 이하다. 나 가 0이면 그 줄은 빈 줄이다.
출력
첫 줄에 사용할 직접 버프의 개수 과 퍼센트 버프의 개수 을 출력한다. (, , )
둘째 줄에 사용할 직접 버프의 번호 개를 증가하는 순서로 출력한다. 버프의 번호는 1부터 시작한다.
셋째 줄에 사용할 퍼센트 버프의 번호 개를 증가하는 순서로 출력한다.
이나 이 0이면 그 자리에 빈 줄을 출력한다.
체력이 최대가 되는 조합은 여러 가지일 수 있으므로, 다음 규칙으로 정한 조합을 출력한다.
- 직접 버프를 강도가 큰 순서로 정렬한다. 강도가 같으면 번호가 작은 쪽을 앞에 둔다. 퍼센트 버프도 같은 방식으로 정렬한다.
- 부터 까지의 각 에 대해 로 두고, 정렬한 순서에서 앞의 직접 버프 개와 앞의 퍼센트 버프 개를 고른다.
- 이렇게 만든 후보 중에서 체력이 가장 큰 것을 출력한다. 체력이 같은 후보가 여럿이면 이 가장 작은 것을 고른다.