/ Vijos / 讨论 / 第k大 /

注意readln!!!

var n,k,i:longint;a:array[1..100000]of longint;
procedure sort(l,r:longint);
var i,j,x,y:longint;
begin
 i:=l;j:=r;x:=a[(l+r) div 2];
 repeat
  while a[i]<x do inc(i);while x<a[j] do dec(j);
  if not(i>j) then begin y:=a[i];a[i]:=a[j];a[j]:=y;inc(i);dec(j);end;
 until i>j;
 if l<j then sort(l,j);if i<r then sort(i,r);
end;
begin
 read(n,k);
 for i:=1 to n do read(a[i]);
 sort(1,n);write(a[n-k+1]);
end.

快排程序
readln一定要换成read!!!!!不然会错
坑人题目
最后要输出a[n-k+1]

1 条评论

  • @ 2016-08-27 11:20:19

    快排确实是够快的
    pascal的readln和read区别很大好吧。。这个是必须注意的

    • @ 2016-08-27 11:52:16

      其实这种快排是可以卡掉的吧。。

    • @ 2016-08-27 12:18:44

      卡掉当然很容易。。不过一般数据没这么恶心吧。。我一般sort走天下,特殊情况打快排之类的

  • 1

信息

ID
1788
难度
5
分类
模拟 点击显示
标签
(无)
递交数
2037
已通过
646
通过率
32%
被复制
3
上传者