比赛 NOIP_1 评测结果 AAAAAAAAAA
题目名称 画展 最终得分 100
用户昵称 zqzas 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2008-09-03 22:03:06
显示代码纯文本
#include <stdio.h>

#define maxn 1000010
#define maxm 2010
#define inf 99999999

int n,m,ans1,ans2,data[maxn],many[maxm];
FILE *f1,*f2;

void check(int i,int j)
{
	if (j-i<ans2-ans1)
	{
		ans1=i;
		ans2=j;
	}
	else
		if (j-i==ans2-ans1 && i<ans1)
		{
			ans1=i;
			ans2=j;
		}
}

void run(void)
{
	int i,j,now;
	i=0;
	j=-1;
	now=0;
	while (j<n-1)
	{
		j++;
		many[data[j]]++;
		if (many[data[j]]==1)
		{
			now++;
			if (now>=m)
			{
				check(i,j);
				while (many[data[i]]>1)
				{
					many[data[i]]--;
					i++;
				}
				check(i,j);
				many[data[i++]]--;
				now--;
			}
		}
	}
}

void ini(void)
{
	int i;
	fscanf(f1,"%d%d",&n,&m);
	for (i=0;i<n;i++)
		fscanf(f1,"%d",&data[i]);
	ans2=inf;
}

int main(void)
{
	f1=fopen("exhibit.in","r");
	f2=fopen("exhibit.out","w");
	ini();
	run();
	fprintf(f2,"%d %d",ans1+1,ans2+1);
	fclose(f1);fclose(f2);
	return 0;
}