双指针pts55!悬赏一关注
  • 板块P1638 逛画展
  • 楼主_wakeup
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/3/7 17:33
  • 上次更新2023/10/23 22:46:28
查看原帖
双指针pts55!悬赏一关注
666741
_wakeup楼主2023/3/7 17:33
#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,a[1000100],v[2010],hua=0,l,r,minn=1000005;
int main()
{
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
	int i=1,j=1;
	while(i<=n)
	{
		while(hua<m&&j<n)
		{
			j++;
			if(v[a[j]]==0)hua++;
			v[a[j]]++;
		}
		v[a[i]]--;
		if(v[a[i]]==0)hua--;
		i++;
		if(j-i+1<minn&&hua==m)l=i,r=j,minn=j-i+1;
	}
	printf("%lld %lld",l,r);
	return 0;
}
2023/3/7 17:33
加载中...