记录编号 135932 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010]乌龟棋 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 Pascal 运行时间 0.353 s
提交时间 2014-11-01 21:27:56 内存使用 12.04 MiB
显示代码纯文本
var
a:array[1..4]of longint;
n,m,i,j,k,l:longint;
v:array[-1..40,-1..40,-1..40,-1..40]of longint;
f:array[1..350]of longint;

  function tt(s1,s2,s3,s4:longint):longint;
  var
  t,a:longint;
  begin
  a:=0;
  if v[s1,s2,s3,s4]>=0 then tt:=v[s1,s2,s3,s4]
  else
    begin
    t:=tt(s1-1,s2,s3,s4);
    if a<t+f[1+s1+s2*2+s3*3+s4*4] then a:=t+f[1+s1+s2*2+s3*3+s4*4];
    t:=tt(s1,s2-1,s3,s4);
    if a<t+f[1+s1+s2*2+s3*3+s4*4] then a:=t+f[1+s1+s2*2+s3*3+s4*4];
    t:=tt(s1,s2,s3-1,s4);
    if a<t+f[1+s1+s2*2+s3*3+s4*4] then a:=t+f[1+s1+s2*2+s3*3+s4*4];
    t:=tt(s1,s2,s3,s4-1);
    if a<t+f[1+s1+s2*2+s3*3+s4*4] then a:=t+f[1+s1+s2*2+s3*3+s4*4];
    tt:=a;
    v[s1,s2,s3,s4]:=a;
    end;
  end;


begin
assign(input,'tortoise.in');
reset(input);
assign(output,'tortoise.out');
rewrite(output);
read(n,m);
for n:=1 to n do
read(f[n]);
for i:=0 to 40 do
for j:=0 to 40 do
for k:=0 to 40 do
for l:=0 to 40 do
v[i,j,k,l]:=-1;
v[0,0,0,0]:=f[1];
for m:=1 to m do
  begin
  read(i);
  inc(a[i]);
  end;
writeln(tt(a[1],a[2],a[3],a[4]));
close(input);close(output);
end.