Cod sursa(job #575317)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 8 aprilie 2011 10:02:36
Problema Statistici de ordine Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 0.81 kb
var v:array [1..3000000] of longint;
    buf1:array[1.. 1 shl 17] of char;
    i, n, k, aux, q:longint;
    f, g:text;

procedure qsort (st, dr:longint);
var s, d, p:longint;
  begin
  if st<dr then
    begin
    p:=v[random(dr-st+1)+st];
    s:=st-1; d:=dr+1;
    while s < d do
      begin
      s:=s+1; d:=d-1;
      while v[s]<p do s:= s+1;
      while v[d]>p do d:= d-1;
      if s < d then
        begin
        aux:= v[s]; v[s]:=v[d]; v[d]:=aux;
        end;
      end;
    if k <= d then qsort (st, d-1)
              else qsort (d+1, dr);
    end;
  end;

begin
assign (f, 'sdo.in'); settextbuf (f, buf1); reset (f);
assign (g, 'sdo.out'); rewrite (g);
randomize;

read (f, n, k);
for i := 1 to n do read (f, v[i]);

qsort (1, n);
q:=v[k];
writeln (g, q);
close (f); close (g);
end.