比赛 |
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;
}