Cod sursa(job #66255)

Utilizator ScrazyRobert Szasz Scrazy Data 17 iunie 2007 10:37:54
Problema Secv Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.94 kb
const MaxN=5001;
var

  fin,fout:text;
  a,v:array[1..MaxN] of longint;
  n,x,i,j:integer;
  mini,min,max,maxi,maxh:longint;
  hossz:longint;
  ok:boolean;

begin

  assign(fin,'secv.in');reset(fin);
  assign(fout,'secv.out');rewrite(fout);

  readln(fin,n);

  min:=maxlongint;
  hossz:=0;

  for i:=1 to n do begin
    read(fin,a[i]);
    if a[i]<min then begin
       min:=a[i];
       mini:=i;
    end;
    ok:=true;
    for j:=1 to i-1 do
      if a[j]=a[i] then ok:=false;

    if ok then hossz:=hossz+1;
  end;

  close(fin);
  v[1]:=1;

  for i:=mini to n do begin
    max:=0;
    for j:=mini to i-1 do
      if (v[j]>max)and(a[j]<a[i]) then max:=v[j];
    v[i]:=max+1;
  end;

  max:=-1;
  for i:=1 to n do
    if v[i]>max then begin
       max:=v[i];
       maxi:=i;
    end;

  maxh:=maxi-mini+1;

  if max=hossz then writeln(fout,maxh)
               else writeln(fout,-1);

  close(fout);

end.