比赛 |
20121106 |
评测结果 |
AAWWAAWAAAWAWWW |
题目名称 |
二十一点 |
最终得分 |
53 |
用户昵称 |
limitation |
运行时间 |
0.006 s |
代码语言 |
Pascal |
内存使用 |
0.37 MiB |
提交时间 |
2012-11-06 10:54:36 |
显示代码纯文本
program p1250;
uses math;
var a,f:array[0..10000]of longint;
n,i,z,p,l,turn,r,zz:longint;
begin
assign(input,'jack.in');
reset(input);
assign(output,'jack.out');
rewrite(output);
read(n);
for i:=1 to n do
read(a[i]);
for i:=n downto n-4 do
f[i]:=0;
for i:=n-5 downto 1 do
begin
z:=0;p:=0;
inc(z,a[i]);inc(z,a[i+2]);
inc(p,a[i+1]);inc(p,a[i+3]);
turn:=1;
r:=i+3;
while r<n do
case turn of
1:begin
if (z<=16)and(r<n) then begin inc(r); inc(z,a[r]); end;
if z=21 then begin f[i]:=max(f[i],f[r+1]); break; end;
if z>21 then begin f[i]:=max(f[i],f[r+1]+1); break; end;
turn:=0;
end;
0:begin
if (p>z)and(z>16) then begin f[i]:=max(f[i],f[r+1]+1); break; end;
l:=r;
zz:=z;
while (z<=16)and(l<n) do begin inc(l); inc(z,a[l]); end;
if z>21 then begin f[i]:=max(f[i],f[l+1]+1); break; end
else if p>z then f[i]:=max(f[i],f[l+1]+1)
else f[i]:=max(f[i],f[l+1]);
z:=zz;
if r<n then
begin
inc(r);
inc(p,a[r]);
end;
if p>21 then begin f[i]:=max(f[i],f[r+2]); break; end;
turn:=1;
if r=n then
if(p>z) then begin f[i]:=max(f[i],1); break; end else begin f[i]:=max(f[i],0); break; end;
end;
end;
end;
write(f[1]);
close(input);
close(output);
end.