종말론자

시간 제한1초메모리 제한128 MB

요약
n개의 표본과 창 크기 w가 주어질 때 각 창 평균의 내림값을 구하고, 평균들의 최댓값과 최솟값의 차이를 출력한다.
난이도

쉬움10점 중 3점

유형
슬라이딩 윈도우, 배열, 구현
정답자
아직 제출이 없습니다

문제

당신은 세상의 종말을 예언하는 종말론자로서, 자신의 종말 이론을 뒷받침할 새로운 데이터를 늘 찾아다닌다. 흔한 형태의 데이터는 시간에 따라 측정한 스칼라 표본들의 수열이다. 예를 들어 하루 동안 1초 간격으로 잰 바깥 기온이나, 한 달 동안 1분마다 잰 조수의 높이 같은 것이다. 이런 표본이 주어지면, 가장 큰 표본과 가장 작은 표본의 차이가 큰지 확인하고 싶다. 그래야 세상이 크게 변했으니 곧 종말이 온다고 외칠 수 있기 때문이다.

문제는 이런 데이터에 측정 장비의 일시적 오류 때문에 값이 지나치게 크거나 작은 잘못된 표본이 섞여 있는 경우가 많다는 점이다. 주장을 더 그럴듯하게 만들기 위해, 이런 이상값을 이동 평균(moving average)으로 매끄럽게 다듬으려 한다.

nn개의 표본 s1,s2,…,sns_1, s_2, \ldots, s_n과 창 크기 ww(w≤nw \le n)가 주어지면, 이동 평균은 n−w+1n - w + 1개의 값으로 이루어진다. 첫 번째 값은 처음 ww개의 표본 s1,s2,…,sws_1, s_2, \ldots, s_w의 평균이다. 두 번째 값은 같은 창을 한 칸 뒤로 옮긴 것, 즉 s2,s3,…,sw+1s_2, s_3, \ldots, s_{w+1}의 평균이다. 이런 식으로 계속된다. 간단히 하기 위해, 이동 평균의 각 값은 자기 자신보다 크지 않은 가장 가까운 정수로 내림한다(바닥 함수).

각 데이터 집합에 대해, 이동 평균의 최댓값과 최솟값의 차이를 구하라.

입력

첫 번째 줄에는 데이터 집합의 개수 KK가 주어진다. 이어서 KK개의 데이터 집합이 다음 형식으로 주어진다.

각 데이터 집합의 첫 번째 줄에는 두 정수 nn과 ww가 주어진다. 각각 표본의 개수와 창 크기이며, 1≤n≤1001 \le n \le 100, 1≤w≤n1 \le w \le n이다. 다음 줄에는 표본을 나타내는 nn개의 음이 아닌 정수가 주어진다. 각 표본은 최대 10001000이다.

출력

각 데이터 집합에 대해, 한 줄에 Data Set x:를 출력한다. 여기서 xx는 해당 데이터 집합의 번호이다(1부터 시작). 다음 줄에는 이동 평균의 최댓값과 최솟값의 절댓값 차이를 출력한다. 각 데이터 집합 뒤에는 빈 줄을 하나 출력한다.

예제3

  1. 예제 1

    입력
    2
    4 2
    2 9 1 0
    5 3
    100 110 5 105 105
    
    예상 출력
    Data Set 1:
    5
    
    Data Set 2:
    2
    
  2. 예제 2

    입력
    1
    5 1
    0 1000 500 250 750
    
    예상 출력
    Data Set 1:
    1000
    
  3. 예제 3

    입력
    1
    3 2
    1 2 4
    
    예상 출력
    Data Set 1:
    2