양 복제

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

요약
각 기계의 양이 정확히 목표 용량에 도달하도록 소수를 입력하고 CLONE 명령으로 배수를 늘리는 과정을, 한 번에 최대 M개까지 지정할 수 있는 제약 아래 최소 명령 수로 구성하는 문제입니다.
난이도

어려움10점 중 8점

유형
그리디, 정수론, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

상근이는 여러 대의 복제 기계를 이용해 양을 늘리려고 한다. 처음에 각 기계에는 양이 1마리씩 들어 있다.

각 복제 기계에는 키보드가 있으며, 소수 p를 입력할 수 있다. 어떤 기계 안에 현재 K마리의 양이 있고, 그 기계에 p가 입력된 상태에서 복제 버튼을 누르면 그 기계 안의 양은 p*K마리가 된다.

각 기계에는 최대 용량이 있어서 그 수를 넘는 양은 넣을 수 없다. 상근이는 각 기계가 주어진 최대 용량에 정확히 도달하도록 명령을 내리고 싶다. 복제 중간에 양을 꺼낼 수 없다.

상근이는 각 기계 앞에 조수 한 명씩을 세우고, 다음 두 종류의 명령을 모두에게 외친다.

  • ENTER p: 모든 조수에게 자기 기계에 소수 p를 입력하라고 지시한다.
  • CLONE a1, a2, ..., ak: 기계 a1, a2, ..., ak 앞의 조수에게 복제 버튼을 누르라고 지시한다. 한 명이 같은 명령에서 두 번 버튼을 누르지 않도록 번호들은 모두 서로 달라야 한다. 또한 한 번의 CLONE 명령에는 최대 M개의 번호만 말할 수 있다.

필요한 명령 수가 최소가 되도록, 모든 기계의 양을 최대한 많이 만드는 명령 순서를 출력하라. 가능한 최소 명령 순서가 여러 가지라면 아무거나 출력해도 된다.

입력

첫째 줄에 복제 기계의 수 N이 주어진다. (1 <= N <= 50)

둘째 줄에는 각 기계의 최대 용량이 주어진다. 각 용량은 1,000,000,000보다 작은 자연수이다.

셋째 줄에는 한 번의 CLONE 명령에서 말할 수 있는 번호의 최대 개수 M이 주어진다. (1 <= M <= N)

출력

한 줄에 하나씩 명령을 출력한다. 출력한 명령 수는 최소여야 하며, 조건을 만족하는 최소 명령 순서가 여러 가지인 경우 아무거나 출력해도 된다.

예제2

  1. 예제 1

    입력
    3
    2 3 6
    2
    
    예상 출력
    ENTER 2
    CLONE 1 3
    ENTER 3
    CLONE 2 3
    
  2. 예제 2

    입력
    5
    25 25 30 25 25
    3
    
    예상 출력
    ENTER 2
    CLONE 3
    ENTER 5
    CLONE 1 2 3
    CLONE 5 4 1
    CLONE 2 4 5
    ENTER 3
    CLONE 3