讨论 / 517:死循环?
lxl 2010-06-24 21:09:00
点我顶贴 收藏 删除
测试时,有的死,有的不死,提交后便全死了?

var

a,b:array[1..5000] of longint;

i,j,k,jieguo,m,n,hao,score,p,q:longint;

begin

read(n,m);

for i:=1 to n do

begin

readln(hao,score);

a[i]:=hao;

b[i]:=score;

end;

for i:=1 to n-1 do

for j:=i+1 to n do

if b[i]<b[j] then

begin

k:=b[i];

b[i]:=b[j];

b[j]:=k;

end;

m:=trunc(m*1.5);

while trunc(b[m])=trunc(b[m+1]) do

inc(jieguo);

writeln(b[m],' ',jieguo+m);

for i:=1 to m do

begin

if (b[i]=b[i+1]) and (a[i]>a[i+1]) then

begin

k:=a[i];

a[i]:=a[i+1];

a[i+1]:=k;

end;

p:=a[i];

q:=b[i];

writeln(p,' ',q);

end;

end.

#1 Advanced@2010-06-24 08:14:00
回复 删除
应该不是死循环

你使用的是简单排序,时间复杂度O(n^2)。而对于本题的数据范围为n<=5000,显然这是超时的。

解决这题的方法应是使用高级的排序,比如 快排O(nlogn) ,这样的话应该没问题了!

#2 renqimg@2010-06-24 21:08:00
回复 删除
asdf

asdf

#3 renqimg@2010-06-24 21:08:00
回复 删除
asdf

asdf

#4 renqimg@2010-06-24 21:09:00
回复 删除
asdf

asdf

#5 renqimg@2010-06-24 21:09:00
回复 删除
asdf

asdf

#6 renqimg@2010-06-24 21:09:00
回复 删除
asdf

asdf

#7 renqimg@2010-06-24 21:09:00
回复 删除
adsf

asdf

#8 renqimg@2010-06-24 21:09:00
回复 删除
asdf

asdf

查看更多回复
提交回复