讨论 / 求神犇看看错到哪里了?
剪刀 2012-02-04 01:41:00
点我顶贴 收藏 删除
var k,temp:array[1..10010]of longint;

n,m,i,j,ans,min,max,o:longint;

procedure find(x,y:longint);

var i,j,p,t,l:longint;

begin

i:=x;j:=y;l:=(x+y)shr 1;p:=k[l];

while i<j do

begin

while k[i]<p do inc(i);

while k[j]>p do dec(j);

if i<=j then

begin

t:=k[i];k[i]:=k[j];k[j]:=t;

if l=i then l:=j else if l=j then l:=i;

inc(i);dec(j);

end;

end;

if l=o then begin ans:=p; exit; end;

if l>o then begin find(x,l-1); exit; end;

if l<o then begin find(l+1,y); exit; end;

end;

begin

readln(n,m);

for i:=1 to n do

read(temp[i]);

for i:=1 to m do

begin

readln(min,max,o);

for j:=min to max do

k[j-min+1]:=temp[j];

find(1,max-min+1);

writeln(ans);

end;

end.

只有4、7、9过了,其余都是错误的答案。

#1 desprado2@2012-02-04 01:41:00
回复 删除
饿,有明显错误!
查看更多回复
提交回复