文章
9
粉丝
40
获赞
25
访问
1.8k
滑动窗口
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int x[N];
int main(){
int n,m;
while(cin>>n>>m){
for(int i = 1;i <= n;i ++)
cin>>x[i];
map<int,int> mp;
int l = 1,r = 1,minlen = n;
int ll = 1,rr = n;
while(r <= n){
if(mp.find(x[r]) == mp.end()) mp.insert({x[r],1});
else mp[x[r]] ++;
while(mp.size() == m){
if(r-l+1 < minlen){
ll = l;
rr = r;
minlen = r-l+1;
}
mp[x[l]] --;
if(mp[x[l]] == 0) mp.erase(x[l]);
l ++;
}
r ++;
}
cout<<ll<<" "<<rr<<endl;
}
return 0;
登录后发布评论
暂无评论,来抢沙发