K-mins

시간 제한2초메모리 제한1024 MB

요약
모든 연속 부분 수열에서 K번째로 작은 값을 더한다. 길이가 K보다 짧으면 0으로 친다.
난이도

보통10점 중 7점

유형
정렬, 분할 정복, 조합론, 누적 합
정답자
아직 제출이 없습니다

문제

길이 NN의 수열 A=\[A_1,A_2,…,A_N]A=\[A\_{1}, A\_{2},\dots, A\_{N}]이 있다. 1≤i<j≤N1\leq i < j \leq N을 만족하는 임의의 두 정수 ii와 jj에 대하여 A_i≠A_jA\_{i}\neq A\_{j}를 만족한다. 1≤l≤r≤N1\leq l \leq r \leq N을 만족하는 두 정수 ll과 rr에 대하여 함수 f(l,r)f(l,r)을 다음과 같이 정의하자.

f(l,r)=A_l,A_l+1,…,A_rf(l,r)=A\_{l},A\_{l+1},\dots,A\_{r}의 값 중에서 KK번째로 작은 값

만약 구간의 길이를 나타내는 값 r−l+1r-l+1이 KK보다 작다면, f(l,r)=0f(l,r)=0으로 정의한다.

∑_l=1N∑_r=lNf(l,r)\sum\_{l=1}^{N}\sum\_{r=l}^{N}f(l,r)의 값을 구해보자.

입력

첫 번째 줄에 수열 AA의 원소의 개수 NN과 정수 KK가 공백으로 구분되어 주어진다. (1≤N≤100,000;1≤K≤10)(1\leq N \leq 100\\,000; 1\leq K\leq 10)

두 번째 줄에 수열 AA를 이루는 NN개의 정수 A_1,A_2,…,A_NA\_{1},A\_{2},\dots,A\_{N}이 공백으로 구분되어 주어진다. (−109≤A_i≤109)(-10^9\leq A\_{i}\leq 10^{9})

출력

∑_l=1N∑_r=lNf(l,r)\sum\_{l=1}^{N}\sum\_{r=l}^{N}f(l,r)의 값을 출력한다.

예제1

  1. 예제 1

    입력
    5 2
    2 1 5 3 4
    
    예상 출력
    32