您的位置:首页 > 其它

jzoj P1419【汕头市选2012初中组】排序(sort)

2017-03-25 12:12 246 查看
题目大意:

给出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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: