/
Time Limit: 2 sec / Memory Limit: 1024 MiB
配点 : 100 点
問題文
JOI マーケットで K 種類のマカロンが発売された.このマカロンは箱詰めで売られている.
マカロンの箱詰めでは,N 個のマカロンが箱の中で左右一列に並んでおり,左から i 個目 (1 \leqq i \leqq N) のマカロンの種類は A_i である.
ビ太郎はマカロンの箱詰めを購入した.
ビバ子もマカロンを狙っている.ビバ子にマカロンを食べられたくないビ太郎は,ある連続した高々 1 つの区間にシートを張り,その区間のマカロンを見えなくすることにした.左から l 個目のマカロンから,左から r 個目のマカロンまでの区間にシートを張るとき (1 \leqq l \leqq r \leqq N),そのシートの長さは r - l + 1 である.
ビバ子は K種類のマカロンすべてが見えるという状態でない場合,マカロンの箱詰めに手を出さない.
ビ太郎はできるだけ短いシートを張ることで,ビバ子がマカロンの箱詰めに手を出さないようにしたい.マカロンの箱の情報が与えられたとき,ビ太郎が張る必要のあるシートの長さの最小値を求めるプログラムを作成せよ.
入力
入力は以下の形式で標準入力から与えられる.
N K A_1 A_2 \cdots A_N
出力
標準出力に,ビ太郎が張る必要があるシートの長さの最小値を 1 行で出力せよ.ただし,シートを張る必要がない場合は 0 を出力せよ.
制約
- 1 \leqq K \leqq N \leqq 500\,000.
- 1 \leqq A_i \leqq K (1 \leqq i \leqq N).
- 入力される値はすべて整数である.
小課題
- (20 点) N \leqq 100.
- (30 点) K \leqq 100.
- (50 点) 追加の制約はない.
入力例 1
7 3 1 3 2 3 1 2 3
出力例 1
4
例えば,左から 3 個目から 6 個目までのマカロンを見えなくするように長さ 4 のシートを張ると,種類が 2 のマカロンは 1 つも見えなくなるため,ビバ子はマカロンの箱詰めに手を出さない.
これより短いシートで,ビバ子がマカロンの箱詰めに手を出さないようにすることはできない.したがって,4 を出力する.
この入力例はすべての小課題の制約を満たす.
入力例 2
7 4 1 3 4 4 1 3 1
出力例 2
0
ビ太郎が購入したマカロンの箱詰めには,最初から種類が 2 のマカロンがないため,シートを張らなくてもビバ子はマカロンの箱詰めに手を出さない.
したがって,0 を出力する.
この入力例はすべての小課題の制約を満たす.