atcoder#AGC037F. [AGC037F] Counting of Subarrays

[AGC037F] Counting of Subarrays

配点 : 18001800

問題文

正整数列 SS 及び正整数 k,lk,l が以下のいずれかの条件をみたすとき、 SSレベル (k,l)(k,l) に属すると定義することにします。

  • SS の要素数が 11 であり、その要素の値が kk である。
  • あるレベル(k1,l)(k-1,l) に属する数列 T1,T2,...,TmT_1,T_2,...,T_m (mlm \geq l) が存在して、 T1,T2,...,TmT_1,T_2,...,T_m をこの順に連結して得られる数列と SS が一致する。

ただし、k=1k=1 のとき二番目の条件は意味を持たない、つまりレベル(1,l)(1,l)の正整数列は一つ目の条件をみたすもののみであることに注意して下さい。

正整数列 A1,A2,...,ANA_1,A_2,...,A_N と正整数 LL が与えられます。 以下の条件をみたす部分列 Ai,Ai+1,...,AjA_i,A_{i+1},...,A_j (1ijN1 \leq i \leq j \leq N) の個数を求めてください。

  • ある正整数 KK が存在して、数列 Ai,Ai+1,...,AjA_i,A_{i+1},...,A_j がレベル(K,L)(K,L)に属する。

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 2LN2 \leq L \leq N
  • 1Ai1091 \leq A_i \leq 10^9

入力

入力は以下の形式で標準入力から与えられる。

NN LL

A1A_1 A2A_2 ...... ANA_N

出力

条件をみたす部分列の個数を出力せよ。

9 3
2 1 1 1 1 1 1 2 3
22

例えば (1,1,1)(1,1,1)(2)(2) という数列はともにレベル (2,3)(2,3) に属するので、(2,1,1,1,1,1,1)(2,1,1,1,1,1,1) という数列はレベル (3,3)(3,3) に属します。

9 2
2 1 1 1 1 1 1 2 3
41
15 3
4 3 2 1 1 1 2 3 2 2 1 1 1 2 2
31