页面无法加载?点击这里可能会修复。
Placeholder

#10454

침입자 따돌리기 5s 2048MB

问题

아미리아(Amiria)는 조심성이 많은 인터넷 사용자라서, 계정에 2단계 인증을 설정하고 있다. 그녀는 침입자가 이를 훔쳐 가려 하더라도 따돌리기 위해, 추가 안전장치로 특수한 형태의 보안 키를 사용한다. 아미리아의 보안 키는 활성화하려면 코드를 입력해야 한다. 코드를 입력하려면 번호가 적힌 바퀴(휠)에 보안 키를 올려 놓아 돌려야 하는데, 이는 번호 자물쇠와 비슷하다.

아미리아의 보안 키에는 \mathbf{W}개의 바퀴가 일렬로 달려 있다. 각 바퀴에는 1부터 \mathbf{N}까지의 숫자가 순서대로 적혀 있다. 바퀴를 돌리면 현재 표시된 정수를 다음 정수 또는 이전 정수로 바꿀 수 있다. 바퀴의 숫자는 순환하므로, \mathbf{N} 다음은 1이고, 1 이전은 \mathbf{N}이다.

숨겨진 비밀번호는 없다. 보안 키를 활성화하려면, 표시된 숫자들의 수열이 팰린드롬이 되도록 바퀴를 움직여야 한다. 즉, 왼쪽에서 오른쪽으로 읽든 오른쪽에서 왼쪽으로 읽든 같은 수열이어야 한다. 침입자를 더 늦추기 위해 아미리아는 바퀴가 항상 \mathbf{D}만큼씩만 회전하도록 장치를 걸어 두었다. 즉, 한 번의 조작에서 현재 x가 표시된 바퀴는 적절한 순환을 적용하여 x - \mathbf{D} 또는 x + \mathbf{D}가 표시되게 할 수 있다. 구체적으로 x - \mathbf{D} \lt 1이면 실제로는 x - \mathbf{D} + \mathbf{N}가 표시되고, x + \mathbf{D} \gt \mathbf{N}이면 실제로는 x + \mathbf{D} - \mathbf{N}가 표시된다.

아미리아는 이 시스템이 보안 키를 사용하려는 침입자를 얼마나 지연시키는지 확인하고 싶다. 바퀴의 개수와 각 바퀴에 현재 표시된 숫자가 주어질 때, 표시된 수열을 팰린드롬으로 만들기 위한 최소 조작 횟수를 구하라. 만약 허용된 조작만으로는 팰린드롬을 만들 수 없다면, 불가능하다고 보고하라.


输入

입력의 첫 줄에는 테스트 케이스 수 \mathbf{T}가 주어진다. \mathbf{T}개의 테스트 케이스가 이어진다. 각 테스트 케이스는 2줄로 이루어진다. 테스트 케이스의 첫 줄에는 정수 3개 \mathbf{W}, \mathbf{N}, \mathbf{D}가 주어진다. 이는 각각 아미리아의 보안 키에 달린 바퀴의 개수, 각 바퀴에 적힌 숫자의 개수, 그리고 모든 바퀴에 대해 한 번에 회전할 수 있는 고정 증가량을 뜻한다. 테스트 케이스의 둘째 줄에는 \mathbf{W}개의 정수 \mathbf{X_1}, \mathbf{X_2}, \dots, \mathbf{X_W}가 주어지며, \mathbf{X_i}는 왼쪽에서 i번째 바퀴에 현재 표시된 숫자이다.


输出

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력하라. 여기서 x는 (1부터 시작하는) 테스트 케이스 번호이고, y는 표시된 숫자 수열을 팰린드롬으로 만들기 위한 최소 조작 횟수이다. 허용된 조작만으로는 팰린드롬을 만들 방법이 없다면, 대신 yIMPOSSIBLE이어야 한다.


示例

3
5 5 4
1 4 5 5 4
3 4 2
3 4 3
2 4 2
1 4
Case #1: 3
Case #2: 0
Case #3: IMPOSSIBLE
샘플 케이스 #1에서는 첫 번째와 네 번째 바퀴에 각각 한 번씩 더하기를 하고, 다섯 번째 바퀴에 한 번 빼기를 하여 총 3번의 연산으로 수열을 5 ~ 4 ~ 5 ~ 4 ~ 5로 만들 수 있으며 이는 회문이다. 이보다 더 적은 횟수로는 회문을 만들 수 없다. 샘플 케이스 #2에서는 수열이 이미 회문이므로 연산이 필요 없다. 샘플 케이스 #3에서는 수열이 회문이 되려면 두 숫자가 같아야 한다. 하지만 바퀴 값은 2씩만 이동할 수 있고 현재 두 숫자의 홀짝성이 서로 다르므로 그렇게 만들 수 없다.

来源

GCJ 2023b B

需要登录才能编写代码。