27分求助
  • 板块P1638 逛画展
  • 楼主cxhhhhh
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/12 21:14
  • 上次更新2024/8/12 21:24:10
查看原帖
27分求助
1382411
cxhhhhh楼主2024/8/12 21:14
#include<bits/stdc++.h>
using namespace std;
int n, m,num,ans=1000000,ansl,ansr;
const int N=1e6+10;
int a[N];
int b[10001];
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	scanf("%d",&a[i]);
	for(int i=1,j=1;i<=n;i++)
	{
		
		if(b[a[i]]==0)num++;
		b[a[i]]++;
		while(j<i && a[j]==a[i])
		{
			b[a[j]]--;
			j++;
			
		}
		if(num==m)
		{
			if(i-j+1<ans)
			{
			ans=i-j+1;
			ansl=j;
			ansr=i;
			}	
		}
	}
	if(ansl!=0)cout<<ansl<<' '<<ansr<<endl;
	else cout<<"1 "<<n<<endl;
	return 0;
 } 
2024/8/12 21:14
加载中...