记录编号 |
34355 |
评测结果 |
AAAAAAAAAA |
题目名称 |
画展 |
最终得分 |
100 |
用户昵称 |
QhelDIV |
是否通过 |
通过 |
代码语言 |
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;
}