음이 아닌 정수 가 주어진다.
길이가 인 수열 를 다음과 같이 정의한다.
서로 다른 두 인덱스 를 골라 와 를 모두 로 바꾸는 연산을 원하는 만큼 수행할 수 있다.
수열의 모든 원소를 같게 만드는 데 필요한 연산 횟수의 최솟값을 구하고, 이를 달성하는 연산 방법을 하나 출력하여라. 불가능하다면 을 출력하여라.
가능한 경우, 주어진 제약조건 하에서 최소 연산 횟수는 항상 회 이하임을 증명할 수 있다.
이 문제에는 부분 점수가 있다. 자세한 내용은 Scoring 섹션을 참고하라.
입력은 다음과 같은 형식으로 주어진다.
불가능한 경우 한 줄에 을 출력한다.
가능한 경우, 첫째 줄에 최소 연산 횟수 를 출력한다. 이어지는 개의 줄의 번째 줄에 번째 연산에서 고를 두 인덱스 를 다음과 같이 출력한다.
각 테스트케이스의 점수는 해당 테스트케이스가 속한 서브태스크 배점에 대한 비율로 다음과 같이 계산된다.
모든 원소를 같게 만드는 것이 불가능한 경우:
모든 원소를 같게 만드는 것이 가능한 경우:
각 연산에서 이고 여야 하며, 출력한 개의 연산이 실제로 모든 수를 같게 만들어야 한다. 가능한 답이 여러 가지라면 아무거나 출력해도 된다.
서브태스크에서 사용하는 추가 조건은 다음과 같다.
추가 조건 A
추가 조건 B
| 3 | 4 | 추가 조건 A를 만족하고, 이다. |
| 4 | 6 | 추가 조건 A를 만족하고, 이다. |
| 5 | 11 | 추가 조건 A를 만족한다. |
| 6 | 6 | 추가 조건 B를 만족하고, 이다. |
| 7 | 9 | 추가 조건 B를 만족하고, 이다. |
| 8 | 16 | 추가 조건 B를 만족한다. |
| 9 | 9 | . |
| 10 | 13 | . |
| 11 | 18 | 추가적인 제약이 없다. |
각 서브태스크의 점수는 해당 서브태스크에 속한 테스트케이스의 점수 중 최솟값이다.