만드는 중입니다

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

카드 게임 (라지)

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

요약
차이가 K인 등차수열을 이루는 이웃한 세 장을 반복해 지워 남는 카드를 가장 적게 만듭니다.
난이도

보통10점 중 7점

유형
동적 계획법, 구간
정답자
아직 제출이 없습니다

문제

밥은 카드 놀이를 좋아한다. 생일 파티에서 친구 앨리스가 밥에게 카드 한 벌을 선물했다.

카드는 NN장이고 각 카드에는 정수가 하나씩 적혀 있다. 밥은 카드를 왼쪽에서 오른쪽으로 책상에 늘어놓고, 그중 일부를 버리려고 한다. 버리기 전에 먼저 정수 KK를 하나 정한다. 한 번 버릴 때마다 그 시점에 서로 이웃한 카드 세 장을 고르는데, 세 장에 적힌 수를 왼쪽부터 각각 aa, bb, cc라고 하면 반드시

c−b=b−a=Kc - b = b - a = K

를 만족해야 한다.

버린 카드의 자리는 남지 않으므로, 양옆에 있던 카드는 서로 이웃이 된다.

버릴 세 장을 고르는 방법이 여러 가지면 밥은 마지막에 남는 카드가 가장 적어지도록 고른다. 이때 남는 카드 수의 최솟값을 구하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스는 두 줄이다. 첫째 줄에 카드의 개수 NN과 밥이 정한 수 KK가 공백으로 구분되어 주어진다. 둘째 줄에 왼쪽부터 순서대로 카드에 적힌 수 a1,a2,…,aNa_1, a_2, \dots, a_N이 주어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤N≤1001 \le N \le 100
  • 0≤K≤1060 \le K \le 10^6
  • 1≤ai≤1061 \le a_i \le 10^6 (1≤i≤N1 \le i \le N)

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 밥이 카드를 버린 뒤 남는 카드 수의 최솟값이다.

예제1

  1. 예제 1

    입력
    2
    6 0
    4 4 3 3 3 4
    5 1
    3 1 2 3 4
    
    예상 출력
    Case #1: 0
    Case #2: 2