比赛 20101025 评测结果 AWWWWWWWWW
题目名称 整理书本 最终得分 10
用户昵称 make 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-10-25 19:00:43
显示代码纯文本
  1. program book;
  2. var
  3. v,w:array [1..400] of longint;
  4. h:array [1..400,1..400] of record
  5. data,v,w:longint;
  6. end;
  7. n,i,j:longint;
  8. f1,f2:text;
  9.  
  10. procedure init;
  11. var i,j:longint;
  12. begin
  13. assign(f1,'book.in'); reset(f1);
  14. assign(f2,'book.out'); rewrite(f2);
  15. readln(f1,n);
  16. for i:=1 to n do
  17. readln(f1,w[i],v[i]);
  18. close(f1);
  19. for i:=1 to n-1 do begin
  20. h[i,i+1].data:=w[i]-v[i]+w[i+1]-v[i+1];
  21. h[i,i+1].w:=w[i]+w[i+1];
  22. h[i,i+1].v:=v[i]+v[i+1];
  23. end;
  24. end;
  25.  
  26. procedure min(x,y:longint);
  27. var i:longint;
  28. begin
  29. if (h[x,y-1].w-h[x,y-1].v)+(w[y]-v[y])+h[x,y-1].data<(h[x+1,y].w-h[x+1,y].v)+(w[x]-v[x])+h[x+1,y].data then
  30. begin
  31. h[x,y].data:=(h[x,y-1].w-h[x,y-1].v)+(w[y]-v[y])+h[x,y-1].data;
  32. h[x,y].w:=h[x,y-1].w+w[y];
  33. h[x,y].v:=h[x,y-1].v+v[y];
  34. end else begin
  35. h[x,y].data:=(h[x+1,y].w-h[x+1,y].v)+(w[x]-v[x])+h[x+1,y].data;
  36. h[x,y].w:=h[x+1,y].w+w[x];
  37. h[x,y].v:=h[x+1,y].v+v[x];
  38. end;
  39. for i:=x+1 to y-2 do
  40. if (h[x,i].w-h[x,i].v)+(h[i+1,y].w-h[i+1,y].v)+h[x,i].data+h[i+1,y].data<h[x,y].data then begin
  41. h[x,y].data:=(h[x,i].w-h[x,i].v)+(h[i+1,y].w-h[i+1,y].v)+h[x,i].data+h[i+1,y].data;
  42. h[x,y].w:=h[x,i].w+h[i+1,y].w;
  43. h[x,y].v:=h[x,i].v+h[i+1,y].v;
  44. end;
  45. end;
  46.  
  47. procedure play;
  48. var i,k:longint;
  49. begin
  50. k:=2;
  51. i:=1;
  52. while k<=n-1 do begin
  53. while i+k<=n do begin
  54. min(i,i+k);
  55. i:=i+1;
  56. end;
  57. k:=k+1;
  58. end;
  59. end;
  60.  
  61.  
  62. begin
  63. init;
  64. play;
  65. writeln(f2,h[1,n].data);
  66. close(f2);
  67. end.