讨论 / 运行错误|普通保护错误 ????
x-ray 2013-08-04 23:05:00
点我顶贴 收藏 删除
测试结果1: 运行错误|普通保护错误

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

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

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

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

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

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

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

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

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

提交代码: var a:array[1..100000,1..2]of longint;

e:array[1..10]of longint;

n,k,i,j:longint;

procedure qsort;

procedure sort(l,r:integer);

var i,j,x,y,t:integer;

begin

i:=l;

j:=r;

x:=a[(l+r)div 2,1];

t:=a[(l+r)div 2,2];

repeat

while(a[i,1]>x)or(a[i,1]=x)and(a[i,2]<t)do inc(i);

while(a[j,1]<x)or(a[i,1]=x)and(a[i,2]>t) do dec(j);

if not(i>j)then

begin

y:=a[i,1];

a[i,1]:=a[j,1];

a[j,1]:=y;

y:=a[i,2];

a[i,2]:=a[j,2];

a[j,2]:=y;

inc(i);

dec(j);

end;

until i>j;

if l<j then sort(l,j);

if i<r then sort(i,r);

end;

begin

sort(1,n);

end;

begin

readln(n,k);

for i:=1 to 10 do read(e[i]);

readln;

for i:=1 to n do

begin

read(a[i,1]);

a[i,2]:=i;

end;

qsort;

for i:=1 to n do

a[i,1]:=a[i,1]+e[(i-1)mod 10+1];

qsort;

for i:=1 to k-1 do

write(a[i,2],’ ’);

if k<>0 then write(a[k,2]);

end.

哪位大牛知道这咋回事!!!!!!!!

快疯了!!!!!!!!!!!!!!!

#1 x-ray@2009-03-01 03:51:00
回复 删除
怎么没人?

#2 hades@2009-03-01 04:28:00
回复 删除
把数组改成从0开始试试
#3 x-ray@2009-03-01 05:22:00
回复 删除
回楼上:我又交了一次,还是普通保护错误

快排中间

while(a[i,1]>x)or(a[i,1]=x)and(a[i,2]<t)do inc(i);

while(a[j,1]<x)or(a[i,1]=x)and(a[i,2]>t) do dec(j);

改为

while(a[i,1]>x)or((a[i,1]=x)and(a[i,2]<t))do inc(i);

while(a[j,1]<x)or((a[i,1]=x)and(a[i,2]>t)) do dec(j);

#4 x-ray@2009-03-01 05:23:00
回复 删除
但有人这样过了
#5 x-ray@2009-03-02 05:40:00
回复 删除
有谁能帮帮我
#6 Jollwish@2009-03-02 05:47:00
回复 删除
sort过程

用longint

#7 x-ray@2009-03-04 20:55:00
回复 删除
改成longint还是有五个点错

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

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

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

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

测试结果5: 测试结果错误.错误结果为:21 29 24 53 60 15 92 61

正确结果应为:21 29 24 53 60 15 7 61

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

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

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

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

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

提交代码: var a:array[0..100000,1..2]of longint;

e:array[1..10]of longint;

n,k,i,j:longint;

procedure qsort;

procedure sort(l,r:longint);

var i,j,x,y,t:longint;

begin

i:=l;

j:=r;

x:=a[(l+r)div 2,1];

t:=a[(l+r)div 2,2];

repeat

while(a[i,1]>x)or((a[i,1]=x)and(a[i,2]<t))do inc(i);

while(a[j,1]<x)or((a[i,1]=x)and(a[i,2]>t)) do dec(j);

if not(i>j)then

begin

y:=a[i,1];

a[i,1]:=a[j,1];

a[j,1]:=y;

y:=a[i,2];

a[i,2]:=a[j,2];

a[j,2]:=y;

inc(i);

dec(j);

end;

until i>j;

if l<j then sort(l,j);

if i<r then sort(i,r);

end;

begin

sort(1,n);

end;

begin

readln(n,k);

for i:=1 to 10 do read(e[i]);

readln;

for i:=1 to n do

begin

read(a[i,1]);

a[i,2]:=i;

end;

qsort;

for i:=1 to n do

a[i,1]:=a[i,1]+e[(i-1)mod 10+1];

qsort;

for i:=1 to k-1 do

write(a[i,2],’ ’);

if k<>0 then write(a[k,2]);

end.

#8 x-ray@2009-03-13 03:14:00
回复 删除
??
#9 x-ray@2009-03-13 04:03:00
回复 删除
大牛们看看
#10 x-ray@2009-03-13 04:27:00
回复 删除
我明白了!!!!!!!!!!!!!!!!

sort错误

while(a[j,1]<x)or((a[j,1]=x)and(a[j,2]>t)) do dec(j);

我写成了

while(a[j,1]<x)or((a[i,1]=x)and(a[i,2]>t)) do dec(j);

ac了

查看更多回复
提交回复