김강산
시간 제한3초메모리 제한128 MB
첫 번째와 마지막 더미 높이는 고정한 채, 인접한 높이 차가 d 이하가 되도록 중간 더미들을 조정하는 데 필요한 최소 벽돌 수를 구합니다.
문제
김강산은 벽돌을 쌓아 만든 인공 산으로, 암벽 등반을 연습하려는 사람들이 찾아온다. 그런데 경사가 너무 가팔라 초보자가 오르기에는 어렵다. 관리인 상근이는 산을 조금 더 완만하게 다듬으려고 한다.
김강산은 일렬로 늘어선 개의 벽돌 무더기로 이루어져 있으며, 왼쪽에서 번째 무더기에는 벽돌이 개 쌓여 있다. 인접한 두 무더기의 높이 차이는 이다. 상근이는 인접한 모든 무더기의 높이 차이가 이하가 되도록 만들고 싶다.
상근이는 아무 무더기에나 벽돌을 더 쌓거나 빼낼 수 있지만, 첫 번째 무더기와 마지막 무더기의 벽돌 개수는 바꿀 수 없다. 벽돌 하나를 쌓거나 빼는 데 드는 노력은 이고, 상근이는 전체 노력을 최소로 하고 싶다.
각 무더기의 높이가 주어졌을 때, 인접한 모든 높이 차이를 이하로 만들기 위해 쌓거나 빼야 하는 벽돌 개수의 최솟값을 구하시오. 조건을 만족시키는 것이 불가능하면 impossible을 출력한다.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. ()
각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에는 무더기의 개수 과 허용되는 최대 높이 차이 가 공백으로 구분되어 주어진다. (, ) 둘째 줄에는 각 무더기에 쌓인 벽돌의 개수 이 공백으로 구분되어 주어진다. ()
출력
각 테스트 케이스마다, 인접한 모든 무더기의 높이 차이를 이하로 만들기 위해 쌓거나 빼야 하는 벽돌 개수의 최솟값을 한 줄에 하나씩 출력한다. 조건을 만족시키는 것이 불가능하면 impossible을 출력한다.