종말론자
시간 제한1초메모리 제한128 MB
n개의 표본과 창 크기 w가 주어질 때 각 창 평균의 내림값을 구하고, 평균들의 최댓값과 최솟값의 차이를 출력한다.
문제
당신은 세상의 종말을 예언하는 종말론자로서, 자신의 종말 이론을 뒷받침할 새로운 데이터를 늘 찾아다닌다. 흔한 형태의 데이터는 시간에 따라 측정한 스칼라 표본들의 수열이다. 예를 들어 하루 동안 1초 간격으로 잰 바깥 기온이나, 한 달 동안 1분마다 잰 조수의 높이 같은 것이다. 이런 표본이 주어지면, 가장 큰 표본과 가장 작은 표본의 차이가 큰지 확인하고 싶다. 그래야 세상이 크게 변했으니 곧 종말이 온다고 외칠 수 있기 때문이다.
문제는 이런 데이터에 측정 장비의 일시적 오류 때문에 값이 지나치게 크거나 작은 잘못된 표본이 섞여 있는 경우가 많다는 점이다. 주장을 더 그럴듯하게 만들기 위해, 이런 이상값을 이동 평균(moving average)으로 매끄럽게 다듬으려 한다.
개의 표본 과 창 크기 ()가 주어지면, 이동 평균은 개의 값으로 이루어진다. 첫 번째 값은 처음 개의 표본 의 평균이다. 두 번째 값은 같은 창을 한 칸 뒤로 옮긴 것, 즉 의 평균이다. 이런 식으로 계속된다. 간단히 하기 위해, 이동 평균의 각 값은 자기 자신보다 크지 않은 가장 가까운 정수로 내림한다(바닥 함수).
각 데이터 집합에 대해, 이동 평균의 최댓값과 최솟값의 차이를 구하라.
입력
첫 번째 줄에는 데이터 집합의 개수 가 주어진다. 이어서 개의 데이터 집합이 다음 형식으로 주어진다.
각 데이터 집합의 첫 번째 줄에는 두 정수 과 가 주어진다. 각각 표본의 개수와 창 크기이며, , 이다. 다음 줄에는 표본을 나타내는 개의 음이 아닌 정수가 주어진다. 각 표본은 최대 이다.
출력
각 데이터 집합에 대해, 한 줄에 Data Set x:를 출력한다. 여기서 는 해당 데이터 집합의 번호이다(1부터 시작). 다음 줄에는 이동 평균의 최댓값과 최솟값의 절댓값 차이를 출력한다. 각 데이터 집합 뒤에는 빈 줄을 하나 출력한다.