比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAAAAAAWAA
题目名称 Asm.Def的枪榴弹 最终得分 90
用户昵称 ywx 运行时间 0.019 s
代码语言 Pascal 内存使用 0.15 MiB
提交时间 2015-10-31 11:31:36
显示代码纯文本
type room=record
    a,b,c,d,e:longint;
    end;
var i,j,m,ans,max,n:longint;
    f:array[0..14] of room;
    vis:array[0..14] of integer;
    k:array[1..3] of longint;

procedure dfs(deep:longint);
var i,j:longint;
    kt:array[1..3] of longint;
begin
  ans:=0;
  for i:=1 to 3 do
  ans:=ans+k[i];
  if max<ans then max:=ans;

  for i:=1 to m do
  if vis[i]=0 then begin
  if ((k[1]+k[3])>=f[i].a)and((k[2]+k[3])>=f[i].b)and((k[1]+k[2]+k[3])>=(f[i].a+f[i].b))
   then begin
                    for j:=1 to 3 do kt[j]:=k[j];
       k[1]:=k[1]-f[i].a+f[i].c;
       k[2]:=k[2]-f[i].b+f[i].d;
       k[3]:=k[3]+f[i].e;
       vis[i]:=1;
       for j:=1 to 2 do
       if k[j]<0 then begin k[3]:=k[3]+k[j];k[j]:=0;end;

       dfs(deep+1);
       vis[i]:=0;
       for j:=1 to 3 do k[j]:=kt[j];
       end;
                   end;

end;


begin
  assign(input,'asm_grenade.in');
  assign(output,'asm_grenade.out');
  reset(input);
  rewrite(output);
  readln(n);m:=n;
   for i:=1 to n do
  read(f[i].a);
   for i:=1 to n do
  read(f[i].b);
   for i:=1 to n do
  read(f[i].c);
   for i:=1 to n do
  read(f[i].d);
   for i:=1 to n do
  read(f[i].e);
   for i:=1 to 3 do
   read(k[i]);

  if n>8 then begin

  for i:=1 to n do
  if ((f[i].c+f[i].e)<=f[i].a)and((f[i].d+f[i].e)<=f[i].b) then vis[i]:=1;

  for i:=1 to n do
  if ((f[i].c+f[i].e)>=f[i].a)and((f[i].d+f[i].e)>=f[i].b)and((f[i].c+f[i].d+f[i].e)>(f[i].a+f[i].b))
  then begin
    if ((k[1]+k[3])>=f[i].a)and((k[2]+k[3])>=f[i].b)and((k[1]+k[2]+k[3])>=(f[i].a+f[i].b))
     then  begin
       k[1]:=k[1]-f[i].a+f[i].c;
       k[2]:=k[2]-f[i].b+f[i].d;
       k[3]:=k[3]+f[i].e;
       vis[i]:=1;
       for j:=1 to 2 do
       if k[j]<0 then begin k[3]:=k[3]+k[j];k[j]:=0;end;
           end;
       end;


  for i:=n downto 1 do
    if vis[i]=0 then
             for j:=1 to i-1 do
    if vis[j]=1 then begin vis[j]:=0;f[j].a:=f[i].a;f[j].b:=f[i].b;
               f[j].c:=f[i].c;f[j].d:=f[i].d;f[j].e:=f[i].e;vis[i]:=1;
                  dec(m);
                     end;

            end;


  dfs(0);
  writeln(max);

  close(input);
  close(output);

end.