过了七个点,还有三个TLE。百思不得其解
#include<bits/stdc++.h>
using namespace std;
int read(){
int x=0,w=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*w;
}
int num[2005],qu[100005],head=1,tail,sum,ans=0x7fffffff,l,r;
int minn(int x,int y){
if(x<y){r=tail,l=head;return x;}
else return y;
}
int main(){
int m,n;
cin>>n>>m;
for(tail=1;tail<=n;tail++){
qu[tail]=read();
if(num[qu[tail]]==0)sum++;
num[qu[tail]]++;
while(num[qu[head]]>1){num[qu[head++]]--;}
if(sum==m){ans=minn(tail-head,ans);}
}
printf("%d %d",l,r);
return 0;
}