#include <bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
#define PIID pair<double,double>
//#define int __int128
#define int long long
#define re register
#define rep(ii,aa,bb) for(re int ii = aa; ii <= bb; ii++)
#define Rep(ii,aa,bb) for(re int ii = aa; ii >= bb; ii--)
#define fi first
#define se second
#define inf 0x3f3f3f3f3f3f3f3f
#define ull unsigned long long
#define endl '\n'
#define debug(x) cout<<"#x= "<<x<<endl;
const int N=2e5+5;
const int M=3e5+5;
const int mod=1e9+7;
int _;
int n,m,k;
int a[N],b[N],pre[N],sub[N];
int idx[N];
map<int,int>mp;
map<int,PII>v;
int cnt;
void solve(){
cin>>n>>k;
rep(i,1,n){
cin>>a[i];
idx[a[i]]=i;
}
if(k==1){
cout<<"0"<<endl;
return;
}
rep(i,1,n){
if(!idx[a[i]])continue;
if(mp[a[i]-idx[a[i]]]==0){
v[a[i]-idx[a[i]]]={idx[a[i]],idx[a[i]]};
}
else if(mp[a[i]-idx[a[i]]]<k){
int cur=v[a[i]-idx[a[i]]].fi;
v[a[i]-idx[a[i]]]={cur,idx[a[i]]};
}
mp[a[i]-idx[a[i]]]++;
}
bool is=true;
// cout<<endl;
for(auto t:mp){
// cout<<"mp["<<t.fi<<"]="<<t.se<<endl;
if(t.se>=k){
is=false;
break;
}
}
// cout<<endl;
int ans=inf;
for(auto t:v){
int id=t.fi;
// cout<<"v["<<id<<"]={"<<v[id].fi<<","<<v[id].se<<"}"<<endl;
if(mp[id]>=k){
ans=min(ans,v[id].se-v[id].fi);
}
}
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
_=1;
//cin>>_;
while(_--){
solve();
}
return 0;
}
全部评论
(1) 回帖