#4034: 数据好奇怪 求助高手


cfjhzcb (cfjhzcb)

學校 : Harvard University
編號 : 9545
來源 : [122.96.58.35]
最後登入時間 :
2010-11-12 19:09:19
d501. 第二題:數列最小值 -- 98學年度高雄市資訊學科能力競賽 | From: [122.96.58.35] | 發表日期 : 2010-07-27 13:37

数据好像是n=2 a=3,4 但是答案却是3162~4148

我的程序改编快排 但效率高很多 帮忙看下哪里错了?

program d501;
var
  a:array[1..1000000] of longint;
  n,i,x,y:longint;

function qfind(l,r,t:longint):longint;
  var
    i,j,m:longint;
  procedure swap(i1,j1:longint);
    var
      t1:longint;
    begin
      t1:=a[i1];a[i1]:=a[j1];a[j1]:=t1;
    end;
  begin
    i:=l;j:=r;m:=random(r-l)+l;
    swap(i,m);
    while i<j do
      begin
        while (i<j) and (a[i]<=a[j]) do j:=j-1;
        swap(i,j);
        while (i<j) and (a[i]<=a[j]) do i:=i+1;
        swap(i,j);
      end;
    if t<i then qfind:=qfind(l,i-1,t);
    if t>j then qfind:=qfind(j+1,r,t);
    if t=i then exit(a[i]);
  end;

begin
     while not eof do   begin
  readln(n);
  for i:=1 to n do readln(a[i]);
  x:=qfind(1,n,(n+1) div 2);
  y:=qfind(1,n,n div 2+1);
  write('A=',x);
  for i:=x+1 to y do
    write('、',i);
  writeln;                end;
end.

 
ZeroJudge Forum