比赛 10101115 评测结果 AATTTTTTTT
题目名称 矩形分割 最终得分 20
用户昵称 make 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-15 10:05:04
显示代码纯文本
program cut;
var
 x,y:array [1..2000] of longint;
 x1,y1,x2,y2:array [1..4000000] of longint;
 n,m,min:longint;
 f1,f2:text;

procedure init;
var  i:longint;
begin
 assign(f1,'cut.in'); reset(f1);
 assign(f2,'cut.out'); rewrite(f2);
 readln(f1,n,m);
 for i:=1 to n-1 do read(f1,x[i]);
 readln(f1);
 for i:=1 to m-1 do read(f1,y[i]);
 close(f1);
 x1[1]:=0; y1[1]:=0;
 x2[1]:=n; y2[1]:=m;
 min:=maxlongint;
end;


procedure dfs(k,total,cu:longint);
var r,i,j,temp1,temp2:longint;
begin
 if cu=n*m-1 then begin if total<min then min:=total end
 else begin
 for i:=1 to k do
  for r:=0 to 1 do begin
   if r=0 then
    for j:=x1[i]+1 to x2[i]-1 do begin
     temp1:=x2[i];
     y1[k+1]:=y1[i];
     x2[k+1]:=x2[i];
     y2[k+1]:=y2[i];
     x1[k+1]:=j;
     x2[i]:=j;
     dfs(k+1,total+x[j],cu+1);
     x2[i]:=temp1;
    end;
   if r=1 then
    for j:=y1[i]+1 to y2[i]-1 do begin
     temp2:=y2[i];
     x1[k+1]:=x1[i];
     y2[k+1]:=y2[i];
     x2[k+1]:=x2[i];
     y1[k+1]:=j;
     y2[i]:=j;
     dfs(k+1,total+y[j],cu+1);
     y2[i]:=temp2;
    end;
  end;
 end;
end;

procedure print;
begin
 writeln(f2,min);
 close(f2);
end;

begin
 init;
 dfs(1,0,0);
 print;
end.