Cod sursa(job #910824)

Utilizator sergiu.marcusMarcus Sergiu sergiu.marcus Data 11 martie 2013 08:44:07
Problema Statistici de ordine Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1 kb
var f,g:text;n,x,i:longint;v:array[1..3000000]of longint;

procedure Quicksort(Left, Right: longint);
var
  ptrLeft, ptrRight, Pivot, Temp: longint;
begin
  ptrLeft := Left;
  ptrRight := Right;
  Pivot := v[(Left + Right) div 2];
  repeat
    while (ptrLeft < Right) and (v[ptrLeft] < Pivot) do
      inc(ptrLeft);
    while (ptrRight > Left) and (v[ptrRight] > Pivot) do
      dec(ptrRight);
    if ptrLeft <= ptrRight then
      begin
        if ptrLeft < ptrRight then
          begin
            Temp := v[ptrLeft];
            v[ptrLeft] := v[ptrRight];
            v[ptrRight] := Temp;
          end;
        inc(ptrLeft);
        dec(ptrRight);
     end;
  until ptrLeft > ptrRight;
  if ptrRight > Left then
    Quicksort(Left, ptrRight);
  if ptrLeft < Right then
    Quicksort(ptrLeft, Right);
end;

begin
assign(f,'sdo.in');reset(f);
assign(g,'sdo.out');rewrite(g);
readln(f,n,x);
for i:=1 to n do
read(f,v[i]);
quicksort(1,n);
write(g,v[x]);
close(f);
close(g);

end.