Cod sursa(job #46431)

Utilizator raduzerRadu Zernoveanu raduzer Data 2 aprilie 2007 17:26:25
Problema Secv Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.59 kb
var a,b:array[1..5010]of longint;
    n,m,i,j,min,s,t,q,l:longint;

procedure Sort;
var i,sch,z:longint;
begin
     repeat
          sch:=0;
          for i:=1 to m-1 do
          begin
               if b[i]>b[i+1] then
               begin
                    z:=b[i];
                    b[i]:=b[i+1];
                    b[i+1]:=z;
                    sch:=1;
               end;
          end;
     until sch=0;
end;

begin
     assign(input,'secv.in');
     reset(input);
     assign(output,'secv.out');
     rewrite(output);
     readln(n);
     m:=0;
     for i:=1 to n do
     begin
          read(a[i]);
          q:=0;
          for j:=1 to m do
          begin
               if b[j]=a[i] then
               begin
                    q:=1;
                    break;
               end;
          end;
          if q=0 then
          begin
               inc(m);
               b[m]:=a[i];
          end;
     end;
     sort;
     j:=1;
     min:=n+1;
     for i:=1 to n do
     begin
          l:=i;
          j:=1;
          s:=1;
          if a[i]=b[1] then
          begin
               j:=j+1;
               while l<n do
               begin
                    if j>m then break;
                    l:=l+1;
                    if a[l]=b[j] then
                    begin
                         j:=j+1;
                         s:=s+1;
                    end;
               end;
               if (s=m)and(l-i+1<min) then min:=l-i+1;
          end;
     end;
     if min=n+1 then min:=-1;
     writeln(min);
close(output);
end.