求助#3 5 8 9 10 11
  • 板块P1638 逛画展
  • 楼主bbbfllm
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/2/15 23:43
  • 上次更新2023/10/28 08:25:54
查看原帖
求助#3 5 8 9 10 11
669627
bbbfllm楼主2022/2/15 23:43
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
	int n,m,r=0,l,mid,r1,l1;
	scanf("%d%d",&m,&n);
	int num[20000],i,j,flag=0,paint[20000];
	for(i=0;i<m;i++)
	scanf("%d",&paint[i]);
	for(i=0;i<n;i++)
	num[i]=0;
	for(i=0;i<m;i++)
	{	if(num[paint[i]-1]==0)
		flag++;
		num[paint[i]-1]++;
		if(flag==n)
		{	l=0;r=i;
			while(num[paint[l]-1]>1)
			{
			num[paint[l]-1]--;
			l++;
			}
			r=i;
			break;
		}
	}
	mid=i;
	r1=r,l1=l;
	for(i=r+1;i<m;i++)
	{	r1=i;
		num[paint[i]-1]++;
		while(num[paint[l]-1]>1)
		{
			num[paint[l]-1]--;
			l1++;
			}
		if((r1-l1)<(r-l))
		{
			r=r1;l=l1;
			}	
	}
	printf("%d %d",l+1,r+1);
}
2022/2/15 23:43
加载中...