Cod sursa(job #273030)

Utilizator MBlueGheorghevici Mihai MBlue Data 8 martie 2009 01:28:33
Problema Subsir crescator maximal Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 1.22 kb
var v,a,tata:array[1..100000]of longint;
    f:text;
    i,n,max,pozmax,poz:longint;

function caut(m:longint):longint;
var ok:boolean;
    i:longint;
begin
ok:=false;
for i:=m+1 to n do if (v[m]<v[i])and(a[m]<a[i]+1) then begin
                                     a[m]:=a[i]+1;
                                     tata[m]:=i;
                                     ok:=true;
                                     end;
if ok then caut:=i
      else caut:=0;
end;

procedure afisare(n:longint);
begin
if n<>0 then begin
        write(f,v[n],' ');
        afisare(tata[n]);
        end;
end;

begin
assign(f,'scmax.in');reset(f);
read(f,n);
for i:=1 to n do read(f,v[i]);
close(f);
tata[n]:=0;
a[n]:=1;
max:=a[n];pozmax:=n;
for i:=n-1 downto 1 do begin
    a[i]:=1;
    poz:=caut(i);
    if poz<>0 then begin
                   if max<a[i] then begin
                                    max:=a[i];
                                    pozmax:=i;
                                    end;
                   end
              else begin
                   a[i]:=1;
                   tata[i]:=0;
                   end;
end;
assign(f,'scmax.out');rewrite(f);
writeln(f,max);
afisare(pozmax);
close(f);
end.