Cod sursa(job #1153838)

Utilizator Vele_GeorgeVele George Vele_George Data 25 martie 2014 19:32:08
Problema Statistici de ordine Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.85 kb
//statistici de ordine
var a:array[1..3000000] of longint;
    n,i,k:longint;
    f,g:text;

procedure switch(var x,y:longint);
 var aux:longint;
  begin
   aux:=x;
   x:=y;
   y:=aux;
  end;

procedure partizeaza(st,dr:longint);
 var piv,i,j:longint;
  begin
   if (dr-st>0) then
    begin
     piv:=a[(dr+st) div 2];
     switch(piv,a[dr]);
     i:=st-1;
     for j:=st to dr-1 do
      if a[j]<piv then begin
                        inc(i);
                        switch(a[j],a[i]);
                       end;
     inc(i);
     switch(piv,a[i]);
     if i<k then partizeaza(i+1,dr)
            else if i>k then partizeaza(st,i-1);

    end;

  end;

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

close(f);
close(g);
end.