수열 탈집중화
시간 제한1초메모리 제한1024 MB
범위 최솟값/최댓값 치환 연산으로 모든 순서쌍의 제곱 차 합을 최대로 만들되, 연산 횟수를 최소로 하는 순서를 출력한다.
문제
개의 수로 이루어진 수열 에서, 다음과 같은 두 가지 연산을 원하는 횟수만큼 시행할 수 있다.
- : 을 모두 으로 치환한다.
- : 을 모두 으로 치환한다.
예를 들어, 이고 가 였다면, 연산 시행 후에는 가 되고, 그 뒤에 연산 를 시행하면 가 된다.
당신의 목표는 이 최대한 한 곳에 집중되어있지 않도록 하는 것이다. 수열의 집중되어있지 않은 정도는 로 정의된다. 이 값을 최대화하는 것이 목적이다.
주어진 수열 에 대해, 연산을 여러 번 시행하여 의 값을 가능한 한 최대화 하는 방법 중 연산을 최소 횟수로 시행하는 방법을 찾아 출력하라. 최소 횟수의 방법이 여러가지라면 그 중 아무 것이나 출력하라.
입력
첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 가 주어지고,
이후 차례로 개의 테스트 케이스가 주어진다. ()
각 테스트 케이스의 첫 줄에는 정수 이 주어진다 ().
다음 줄에는 개의 정수 가 공백으로 구분되어 주어진다. ()
모든 테스트 케이스에서 의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 첫 줄에는 “Case #”를 출력하여야 한다. 이때 는 테스트 케이스의 번호이다.
다음 줄에는 최소 시행 횟수 을 출력한다.
다음 개의 줄에는 연산들을 시행한 순서대로 출력한다.
각 줄에는 시행 연산을 나타내는 세 수 를 공백을 사이에 두고 출력한다. ()