@[Maysoul](/user/409774)
```
//2023/9/5
//别着急,先通读一遍题目
//别忘了开long long
//写完先看一遍怎么降复杂度
//要么开全局变量要么给定初值
//想想看,有什么情况需要特判
//看看数组开的够不够大
//std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
int num,ans;
int a[MAXN],vis[MAXN];
queue<int> que;
int main()
{
int n,m,u,v;
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>a[i];
int r=1,l=1;
while(num<m){
if(vis[a[r]]==0) num++;
vis[a[r]]++;
que.push(r);
r++;
}
ans=r-1;
v=ans;
u=que.front();
while(que.size()&&vis[a[que.front()]]>1){
vis[a[que.front()]]--;
que.pop();
ans--;
u=que.front();
}
int res=ans;
for (int i=r;i<=n;i++){
que.push(i);
vis[a[i]]++;
res++;
while(que.size()&&vis[a[que.front()]]>1){
//cout<<"ssdas"<<endl;
vis[a[que.front()]]--;
que.pop();
res--;
if(res<ans){
u=que.front();
v=i;
ans=res;
}
}
}
cout<<u<<" "<<v<<endl;
return 0;
}
```
by bzzltl @ 2023-09-06 17:08:47
@[Maysoul](/user/409774) 你这个
```
if(res<ans){
u=que.front();
v=i;
}
```
你比较完大小之后为什么不更新`ans`啊
by bzzltl @ 2023-09-06 17:09:40