만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

침입자 따돌리기

면접 대비

시간 제한5초메모리 제한1024 MB

요약
각 바퀴는 N개의 숫자가 원형으로 이어져 있고 한 번에 D씩 더하거나 빼집니다. 값들이 팰린드롬이 되도록 하는 최소 회전 수를 구하거나 불가능한지 판별합니다.
난이도

보통10점 중 5점

유형
정수론, 수학, 구현
정답자
아직 제출이 없습니다

문제

보안 키에는 WW개의 바퀴가 일렬로 있다. 각 바퀴에는 11부터 NN까지의 숫자가 순서대로 적혀 있다. 바퀴를 한 번 돌리면 표시된 숫자를 바로 다음 숫자나 바로 이전 숫자로 바꿀 수 있다. 숫자는 순환한다. 즉 NN 다음은 11이고, 11 이전은 NN이다.

숨겨진 비밀번호는 없다. 키를 활성화하려면 표시된 숫자열이 회문이어야 한다. 회문은 왼쪽에서 읽든 오른쪽에서 읽든 같은 숫자열을 말한다. 침입자의 움직임을 늦추기 위해 바퀴는 DD 단위로만 돈다. 한 번의 조작으로 xx를 표시한 바퀴를 x−Dx - D 또는 x+Dx + D를 표시하도록 바꿀 수 있다. 순환 규칙은 다음과 같다. x−D<1x - D < 1이면 표시되는 숫자는 x−D+Nx - D + N이 되고, x+D>Nx + D > N이면 표시되는 숫자는 x+D−Nx + D - N이 된다.

각 바퀴의 현재 숫자가 주어졌을 때, 표시된 숫자열을 회문으로 만드는 데 필요한 최소 조작 횟수를 구하라. 불가능하면 그 사실을 보고하라.

입력

첫 줄에 테스트 케이스 수 TT가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 첫 줄에는 정수 WW, NN, DD가 주어진다. 둘째 줄에는 정수 X1,X2,…,XWX_1, X_2, \dots, X_W가 주어진다. XiX_i는 왼쪽에서 ii번째 바퀴에 현재 표시된 숫자이다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 표시된 숫자열을 회문으로 만드는 데 필요한 최소 조작 횟수이다. 불가능하면 yy 대신 IMPOSSIBLE을 출력한다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 1≤D≤N−11 \le D \le N - 1.
  • 모든 ii에 대해 1≤Xi≤N1 \le X_i \le N.

힌트

예제 1에서는 숫자열을 5,4,5,4,55, 4, 5, 4, 5로 만들 수 있으며, 이는 회문이다. 조작은 3번이다. 첫 번째와 네 번째 바퀴에 덧셈을 한 번씩, 다섯 번째 바퀴에 뺄셈을 한 번 사용한다. 이보다 적은 횟수로는 불가능하다.

예제 2는 이미 회문이므로 조작이 필요 없다.

예제 3에서는 회문이 되려면 두 숫자가 같아야 한다. 바퀴 값은 22씩만 움직이는데, 현재 두 숫자의 홀짝이 다르므로 이는 불가능하다.

예제1

  1. 예제 1

    입력
    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