我的做法是取一个点,然后一直向后循环直到找齐所有画
可是只有27分
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+200;
long long m,n,a[N],l,ans,sum,pd,mn=INT_MAX;
map<long long ,int>cnt;
long long qs,zs;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
long long j=i;
ans=0;
while(ans<m&&j<=n-m+1){
if(cnt[a[j]]==0){
ans++;
cnt[a[j]]=1;
}
sum++;
//cout<<ans<<" ";
if(ans==m){
pd=1;
break;
}
j++;
}
cnt.clear();
if(pd==1){
if(sum<mn){
qs=i;zs=i+sum;
mn=sum;
}
pd=0;
}
sum=0;
}
cout<<qs<<" "<<zs-1;
return 0;
}