怎么对一半错一半?怎么改才正确?

var n,i,tot,n1,c:longint;

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

boo:boolean;

procedure qs(l,r:longint);

var x,y,k,m:longint;

begin

k:=a[random(r-l+1)+l];

x:=l;

y:=r;

repeat

while a[x]>k do x:=x+1;

while a[y]1 then begin

n1:=n1+1;

b[n1]:=a[n]+a[n-1];

a[n]:=0;

a[n-1]:=0;

tot:=tot+b[n1];

n:=n-2;

end;

if n=1 then begin

n1:=n1+1;

b[n1]:=a[n];

n:=0

end;

if n=0 then begin

if n1=1 then boo:=true;

for i:=n1 downto 1 do begin

a[i]:=b[i];

end;

qs(1,n1);

fillchar(b,sizeof(b),0);

n:=n1;

n1:=0;

end;

until boo;

writeln(tot);

end.

├ 测试数据 01:答案正确... 0ms

├ 测试数据 02:答案正确... 0ms

├ 测试数据 03:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 04:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 05:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 06:答案正确... 0ms

├ 测试数据 07:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 08:答案正确... 0ms

├ 测试数据 09:答案错误... ├ 标准行输出

 ├ 错误行输出

├ 测试数据 10:答案正确... 0ms

---|---|---|---|---|---|---|---|-

Unaccepted 有效得分:50 有效耗时:0ms

0 条评论

目前还没有评论...

信息

ID
1097
难度
6
分类
贪心 点击显示
标签
递交数
23906
已通过
6330
通过率
26%
被复制
41
上传者