讨论 / [color=red]二分查找做的!找下錯!3q! [/color]
b474908647 2009-02-03 23:00:00
点我顶贴 收藏 删除
program p334;

var

sz:array [1..100000] of string;

da:array [1..100000] of longint;

s1,s2:string;

m,n,i,z,max,ii,w,y,x:longint;

procedure qsort(l,r:integer);

var

i,j:integer;

x,y:string;

begin

i:=l;

j:=r;

x:=sz[(l+r) div 2];

repeat

while sz[i]<x do inc(i);

while sz[j]>x do dec(j);

if i<=j

then begin

y:=sz[i];

sz[i]:=sz[j];

sz[j]:=y;

inc(i);

dec(j);

end;

until i>j;

if i<r

then qsort(i,r);

if l<j

then qsort(l,j);

end; //快排

begin

readln(n,m);

for i:=1 to n do

readln(sz[i]);

qsort(1,n);

max:=-maxlongint;

for i:=1 to m do

begin

readln(s1);

readln(w);

x:=1;

y:=n;

while sz[z]<>s1 do

begin

z:=(x+y) div 2;

if sz[z]<s1

then x:=z+1

else y:=z;

end; //二分查找

da[z]:=da[z]+w;

if (da[z]>max) or ((da[z]=max) and (sz[z]<s2))

then begin

max:=da[z];

s2:=sz[z];

ii:=z;

end; //比較

end;

writeln(sz[ii]);

end.

状态: Unaccepted

测评机: Xeond[6]

得分: 80分

提交日期: 2008-9-23 20:50:00

有效耗时: 1610毫秒

测试结果1: 通过本测试点|有效耗时156:ms

测试结果2: 通过本测试点|有效耗时156:ms

测试结果3: 通过本测试点|有效耗时156:ms

测试结果4: 通过本测试点|有效耗时188:ms

测试结果5: 通过本测试点|有效耗时188:ms

测试结果6: 通过本测试点|有效耗时203:ms

测试结果7: 通过本测试点|有效耗时219:ms

测试结果8: 通过本测试点|有效耗时344:ms

测试结果9: 运行错误|普通保护错误

测试结果10: 运行错误|普通保护错误

最後2個 為什麽 是 普通 保護錯誤啊 ?

哪位 大牛 解釋解釋 謝謝啊 !!

二分查找是自己編 的

估計 有些地方不對

謝謝 指正!

#1 000wang1@2009-02-03 23:00:00
回复 删除
procedure qsort(l,r:integer);

var

i,j:integer;

x,y:string;

错了

procedure qsort(l,r:longint);

var

i,j:longint;

x,y:string;

查看更多回复
提交回复