문제
일반적으로 기상학에서 사용하는 통계 방법으로는 측정치에 대한 중간값을 따지는 방법이 있다.
당신은 매 초마다 온도를 재는 장치에 대한 소프트웨어를 개발하고 있다. 장치는 조그마한 디지털 디스플레이를 가지고 있다. 측정할 때 마다 장치는 측정된 최근 K초에 대한 온도의 중간값을 출력한다.
작성한 소프트웨어를 기계에 집어넣기 전에 이를 컴퓨터에 대해 테스트를 하고자한다.
온도를 매번 재는 과정 대신, 우리는 가짜 온도를 생성하기위한 난수 생성기를 사용한다. 난수 생성기는 seed, mul, add값을 이용하여 난수를 생성하게 되며, 다음을 통해서 tk의 값(k초의 온도)을 생성한다.
t0 = seed
tk+1 = (tk * mul + add) % 65536
이와 더불어 당신에겐 N이 주어지는데, 이는 난수 생성기를 통해 만들어지는 N개의 온도를 뜻한다( t0 부터 tN-1 까지의 값).
seed, mul, add, N, 그리고 K가 주어질 때, 화면에 표시되는 중간값들의 합을 구하는 프로그램을 작성하라.
만약 N = 8이고 K = 4일 경우, (t0, t1, t2, t3), (t1, t2, t3, t4), (t2, t3, t4, t5), (t3, t4, t5, t6), (t4, t5, t6, t7)의 중간값들의 합을 출력해야한다.
중간값은 수열에서 ((K+1)/2) 번째로 작은 값을 뜻한다. 가장 작은 숫자는 1번째로 가장 작은 값이다. 예를 들어 (1,2,5,6,4,3)의 중간값은 3이며, (11,13,12,14,15)의 중간 값은 13이다.
입력
입력은 한줄로 이뤄지며 seed, mul, add, N, K가 입력된다.
seed, mul, add는 0이상 65,535이하의 정수이며 N은 1이상 250,000이하의 정수이다.
K는 1이상 5,000이하의 정수이며, N은 K보다 크거나 같다.
출력
입력에 대해 화면에 표시되는 중간값들의 합을 출력하시오.
예제 #1
3 1 1 10 3
60
예시1 에서 생성되는 숫자들은 (3,4,5,6,7,8,9,10,11,12)다.
이 경우 (3,4,5), (4,5,6), (5,6,7), ..., (10,11,12)의 중간값을 구해야하며, 이 경우의 답은 60이 된다.
예제 #2
10 0 13 5 2
49
예시 2의 경우 생성되는 숫자들은 (10,13,13,13,13)이며, 이 경우에는 순서대로 10, 13, 13, 13이 중간값이 되어, 답이 49가 된다.