1. 程式人生 > >jzoj P1419【汕頭市選2012初中組】排序(sort)

jzoj P1419【汕頭市選2012初中組】排序(sort)

題目大意:
給出N個同學的GPT跟已修學分數,GPA=GPT/已修學分數,求第K大的GPA。

題解:
1.求出GPA,用實數陣列儲存。
2.排序輸出。
時間複雜度:O(N)

var
    a:array [0..1000001] of real;
    x,y:real;
    i,n,m:longint;

procedure qsort(l,r:longint);
var
       i,j:longint;
       mid:real;
begin
       if l>=r then exit;
       i:=l;  j:=r;
       mid:=a[(l+r) div
2]; repeat while a[i]>mid do inc(i); while a[j]<mid do dec(j); if i<=j then begin a[0]:=a[i];a[i]:=a[j];a[j]:=a[0]; inc(i); dec(j); end; until
i>j; qsort(i,r); qsort(l,j); end; begin assign(input,'sort.in'); reset(input); assign(output,'sort.out'); rewrite(output); readln(n,m); for i:=1 to n do begin readln(x,y); a[i]:=x/y; end; qsort(1,n); writeln(a[m]:0
:2); close(input); close(output); end.