만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가방 나르기

면접 대비

시간 제한1초메모리 제한1024 MB

요약
봉투 K개를 모두 옮기는 최소 시간을 구하고, 각 이동에서 옮길 봉투 개수를 출력합니다.
난이도

보통10점 중 4점

유형
동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

올림피아드 심사위원단이 케빈에게 부탁했다. 심사위원 작업실에 있는 포장된 상품 가방 KK개를 모두 시상대까지 옮겨 달라는 것이다. 케빈은 힘이 세서 가방을 몇 개든 한꺼번에 들 수 있다. 다만 가방을 손에 하나씩 거는 데 드는 시간은 앞의 가방보다 두 배씩 늘어난다. 첫 번째 가방은 1초, 두 번째는 2초, 세 번째는 4초, 네 번째는 8초가 걸린다.

가방은 이동 속도도 늦춘다. 가방이 없을 때 케빈은 작업실에서 시상대까지(또는 시상대에서 작업실까지) XX초가 걸린다. 가방을 하나 들 때마다 이 이동 시간에 YY초가 더해진다.

모든 가방을 시상대로 옮기는 가장 빠른 계획을 찾는 프로그램을 작성하라. 케빈은 작업실에서 출발해 가방을 몇 개 들고 시상대로 간다. 가방이 남아 있으면 작업실로 돌아가 다음 짐을 가져온다. 모든 가방이 시상대에 놓이면 케빈은 거기서 대회가 끝나기를 기다린다.

입력

첫 줄에 공백으로 구분된 정수 KK, XX, YY가 주어진다. KK (1≤K≤2001 \le K \le 200)는 상품 가방의 수이다. XX (1≤X≤10 0001 \le X \le 10\,000)는 가방 없이 작업실과 시상대 사이를 이동하는 데 걸리는 시간(초)이다. YY (1≤Y≤5001 \le Y \le 500)는 가방 하나당 이동 시간에 더해지는 초이다.

출력

첫 줄에 모든 가방을 시상대로 옮기는 데 필요한 최소 총 시간 TT(초)를 출력한다.

둘째 줄에 작업실에서 시상대로 가는 이동 횟수 NN을 출력한다.

셋째 줄에 NN개의 정수를 공백으로 구분해 출력한다. 각 정수는 그 이동에서 가져간 가방의 수이다. 최소 시간을 내는 계획이 여럿이면 그중 아무거나 출력한다.

예제2

  1. 예제 1

    입력
    5 50 10
    
    예상 출력
    131
    1
    5
    
  2. 예제 2

    입력
    10 50 10
    
    예상 출력
    312
    2
    5 5