Cod sursa(job #5288)

Utilizator vanila0406Ionescu Victor vanila0406 Data 11 ianuarie 2007 15:31:35
Problema Secv Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.96 kb
program secv;
var fi,g:text;
        v,aux:array[1..5001] of longint;
        b,f:array[1..5001] of longint;
        k,n:longint;



procedure iofile;
var     i,j:longint;
        ok:boolean;
begin
        k:=0;
        assign(fi,'secv.in');
        reset(fi);
        assign(g,'secv.out');
        rewrite(g);
        readln(fi,n);
        for i:=1 to n do
                begin
                        read(fi,v[i]);
                        ok:=false;
                        for j:=1 to k do
                                if aux[j]=v[i] then
                                        begin
                                                ok:=true;
                                                break;
                                        end;
                        if not ok then
                                begin
                                        inc(k);
                                        aux[k]:=v[i];
                                end;
                end;
        close(fi);
end;


procedure prel;
var i,min,max,j:longint;
begin
     max:=-maxlongint;
     for i:=n downto 1 do
        begin
                b[i]:=1;
                f[i]:=i;
                for j:=i+1 to n do
                        if v[i]<v[j] then
                                if b[i]<b[j]+1 then
                                        begin
                                                b[i]:=b[j]+1;
                                                f[i]:=f[j];
                                        end;
                if b[i]>max then max:=b[i];
        end;
     if max<>k then
        begin
                writeln(g,'-1');
                close(g);
                halt;
        end;
     min:=maxlongint;
     for i:=1 to n do
        if b[i]=max then
                if f[i]-i<min then
                        min:=f[i]-i;
     writeln(g,min+1);
     close(g);
end;



begin
        iofile;
        prel;
end.