피쿨레
시간 제한1초메모리 제한1024 MB
- 난이도
아직 분류되지 않았습니다
- 정답자
- 아직 제출이 없습니다
문제
피쿨레는 둥글고 반짝이는 구슬이다. 예전에 아이들이 가지고 놀았다. 우리 세계의 피쿨레마다 정수가 하나씩 적혀 있다. 값이 인 피쿨레가 값이 인 피쿨레를 맞히면, 값이 인 피쿨레는 사라지고 맞은 피쿨레의 값은 에서 로 바뀐다.
주인공 도도는 피쿨레 개를 왼쪽에서 오른쪽으로 일렬로 늘어놓았다. 위치는 왼쪽부터 번부터 번까지 매겨진다. 처음에 번 위치의 피쿨레에는 가 적혀 있다. 게임은 다음과 같이 진행된다. 매 단계마다 도도가 번부터 번 사이 위치의 피쿨레 하나를 골라 왼쪽으로 민다. 피쿨레는 다른 피쿨레에 부딪힐 때까지 움직이고, 부딪히면 위에서 설명한 방식으로 두 피쿨레가 하나로 합쳐진다. 번 밀고 나면 번 위치에 피쿨레가 하나만 남는다.
도도는 큰 수를 좋아한다. 그래서 마지막 피쿨레에 남을 수 있는 가장 큰 수와, 그 수를 얻으려면 피쿨레를 어떤 순서로 밀어야 하는지 알고 싶어 한다.
입력
첫 줄에 자연수 ()이 주어진다. 둘째 줄에는 피쿨레에 적힌 정수 개가 주어진다 ().
출력
첫 줄에 마지막 피쿨레에 남는 수를 출력한다. 다음 개 줄에는 도도가 피쿨레를 미는 순서를 출력한다. 번째 줄의 수는 번째 단계에서 밀 피쿨레의 위치다. 그 위치에는 이미 피쿨레가 있어야 한다.
힌트
첫 번째 테스트 설명: 두 번째 피쿨레만 밀 수 있다. 그러면 첫 번째 피쿨레의 값이 이 되고, 이것이 가능한 최댓값이다.
두 번째 테스트 설명: 밀 수 있는 순서는 두 가지다. {2, 3} 순서에서는 먼저 2번 위치의 피쿨레를 밀면 2 _ 1이 되고, 마지막으로 3번 위치의 피쿨레를 밀어 값이 1인 피쿨레가 남는다. 더 나은 순서는 {3, 2}이다. 첫 번째로 3번을 밀면 3 0 _이 남고, 마지막으로 2번을 밀면 값이 3인 피쿨레가 남는데 이것이 최적이다.