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
15043
回复
删除
应该不是死循环
你使用的是简单排序,时间复杂度O(n^2)。而对于本题的数据范围为n<=5000,显然这是超时的。
解决这题的方法应是使用高级的排序,比如 快排O(nlogn) ,这样的话应该没问题了!