가방 나르기
면접 대비시간 제한1초메모리 제한1024 MB
봉투 K개를 모두 옮기는 최소 시간을 구하고, 각 이동에서 옮길 봉투 개수를 출력합니다.
문제
올림피아드 심사위원단이 케빈에게 부탁했다. 심사위원 작업실에 있는 포장된 상품 가방 개를 모두 시상대까지 옮겨 달라는 것이다. 케빈은 힘이 세서 가방을 몇 개든 한꺼번에 들 수 있다. 다만 가방을 손에 하나씩 거는 데 드는 시간은 앞의 가방보다 두 배씩 늘어난다. 첫 번째 가방은 1초, 두 번째는 2초, 세 번째는 4초, 네 번째는 8초가 걸린다.
가방은 이동 속도도 늦춘다. 가방이 없을 때 케빈은 작업실에서 시상대까지(또는 시상대에서 작업실까지) 초가 걸린다. 가방을 하나 들 때마다 이 이동 시간에 초가 더해진다.
모든 가방을 시상대로 옮기는 가장 빠른 계획을 찾는 프로그램을 작성하라. 케빈은 작업실에서 출발해 가방을 몇 개 들고 시상대로 간다. 가방이 남아 있으면 작업실로 돌아가 다음 짐을 가져온다. 모든 가방이 시상대에 놓이면 케빈은 거기서 대회가 끝나기를 기다린다.
입력
첫 줄에 공백으로 구분된 정수 , , 가 주어진다. ()는 상품 가방의 수이다. ()는 가방 없이 작업실과 시상대 사이를 이동하는 데 걸리는 시간(초)이다. ()는 가방 하나당 이동 시간에 더해지는 초이다.
출력
첫 줄에 모든 가방을 시상대로 옮기는 데 필요한 최소 총 시간 (초)를 출력한다.
둘째 줄에 작업실에서 시상대로 가는 이동 횟수 을 출력한다.
셋째 줄에 개의 정수를 공백으로 구분해 출력한다. 각 정수는 그 이동에서 가져간 가방의 수이다. 최소 시간을 내는 계획이 여럿이면 그중 아무거나 출력한다.