记录编号 34355 评测结果 AAAAAAAAAA
题目名称 画展 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.322 s
提交时间 2011-12-12 11:35:05 内存使用 15.52 MiB
显示代码纯文本
#include <fstream>
#include <memory.h>
using namespace std;
ifstream fin("exhibit.in");
ofstream fout("exhibit.out");
long long ch[1000001];
long long Min=1,N,M,A[1000001],St,En;
long long before,last;
int main()
{
	fin>>N>>M;

	int i,j,need=N-M;
	int sum=0;bool bo;
	for(i=1;i<=N;i++)
		fin>>A[i];
	before=1;
	
	for(i=1;i<=18;i++)
		Min*=10;
	
	for(i=1;i<=N;i++)
		if(!ch[A[i]])
		{
			sum++;
			ch[A[i]]++;
			if(sum==M)
			{
				last=i;
				En=i;St=1;
				Min=En-St+1;
				break;
			}
		}
		else
			ch[A[i]]++;
	
	for(;before<=need;before++)
	{
		sum=0;bo=false;
		ch[A[before]]--;
		if(!ch[A[before]])
		{
			for(last+=1;last<=N;last++)
				if(A[last]==A[before])
				{
					ch[A[last]]++;
					bo=true;
					break;
				}
				else
					ch[A[last]]++;
		}
		else
			bo=true;
		
		if(last-before<Min && bo)
		{
			Min=last-before;
			St=before+1;
			En=last;
		}
		if(bo==false)
		{
			last--;
			break;
		}
		if(before%1000==0)
			ch[1000000]=1;
		
	}
	
	fout<<St<<" "<<En<<endl;
	
	fin.close();
	fout.close();
	return 0;
}