比赛 NOIP_1 评测结果 C
题目名称 画展 最终得分 0
用户昵称 辨机ZN 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-10-12 11:41:02
显示代码纯文本
program ex(f1,f2);
 type
  zn=array [1..2000] of longint;
  ka=array [1..1000000] of integer;
 var
  a:ka; f1,f2:text; i,j,k,m,n,p,l:longint;
  ans,tot,left,right,ll,rr,beginer:longint;
  c,d:zn; flag:boolean;
 begin
  assign(f1,'exhibit.in'); reset(f1);
  assign(f2,'exhibit.out'); rewrite(f2);
  readln(f1,n,m);
  for i:=1 to m do c[i]:=0;
  for i:=1 to n do read(f1,a[i]);
  flag:=true;
  left:=1;
  ans:=maxlongint;
  beginer:=1;
while flag do
 begin
  for i:=beginer to n do
   begin
    if c[a[i]]=0 then
     begin
      tot:=tot+1;
      c[a[i]]:=c[a[i]]+1;
      if tot=m then
       begin
        right:=i;
        if i=n then flag:=false;
        break;
       end;
     end
     else inc(c[a[i]]);
     if i=n then flag:=false;
   end;

  for i:=left to right do
   begin
    dec(c[a[i]]);
    if c[a[i]]<=0 then begin dec(tot); break; end
                  else l:=left+1;
   end;
  if right-l<ans then
   begin
    ans:=right-l;
    ll:=l;
    rr:=right;
   end;
  left:=l+1;
  beginer:=right+1;
 end;
 if ll=0 then inc(ll);
 writeln(f2,ll,' ',rr);
 close(f1);
 close(f2);
end.