만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

K-mins

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

요약
서로 다른 정수로 이루어진 배열에서 모든 부분 배열의 K번째로 작은 값을 더한 합을 구합니다. 길이가 K보다 짧은 부분 배열은 0으로 계산합니다.
난이도

보통10점 중 6점

유형
분할 정복, 정렬, 배열
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A=[A1,A2,…,AN]A=[A_1, A_2, \dots, A_N]이 주어진다. 1≤i<j≤N1 \leq i < j \leq N을 만족하는 임의의 두 정수 ii와 jj에 대하여 Ai≠AjA_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)f(l,r)은 Al,Al+1,…,ArA_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 0001 \leq N \leq 100\,000; 1≤K≤101 \leq K \leq 10)

두 번째 줄에 수열 AA를 이루는 NN개의 정수 A1,A2,…,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. (−109≤Ai≤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