题目大意:
给出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.