记录编号 60141 评测结果 AAAAAAAAAA
题目名称 [NOIP 2004]合并果子 最终得分 100
用户昵称 Gravatar朱大帅锅 是否通过 通过
代码语言 Pascal 运行时间 0.030 s
提交时间 2013-05-18 11:48:11 内存使用 0.20 MiB
显示代码纯文本
  1. var
  2. i,j,k,n,a,b,len,temp:longint;
  3. sum:qword;
  4. heap:array[0..10010]of longint;
  5. procedure put(x:longint);
  6. var
  7. son,temp:longint;
  8. begin
  9. inc(len);
  10. heap[len]:=x;
  11. son:=len;
  12. while (son<>1)and(heap[son div 2]>heap[son]) do
  13. begin
  14. temp:=heap[son div 2];
  15. heap[son div 2]:=heap[son];
  16. heap[son]:=temp;
  17. son:=son div 2;
  18. end;
  19. end;
  20. function get:longint;
  21. var
  22. fa,son,temp:longint;
  23. begin
  24. get:=heap[1];
  25. heap[1]:=heap[len];
  26. dec(len);
  27. fa:=1;
  28. while (fa*2<=len) do
  29. begin
  30. if (fa*2+1>len)or (heap[fa*2]<heap[fa*2+1]) then
  31. son:=fa*2
  32. else son:=fa*2+1;
  33. if heap[fa]>heap[son] then
  34. begin
  35. temp:=heap[fa]; heap[fa]:=heap[son]; heap[son]:=temp;
  36. fa:=son;
  37. end
  38. else break;
  39. end;
  40. end;
  41. begin
  42. assign(input,'fruit.in'); reset(input);
  43. assign(output,'fruit.out');rewrite(output);
  44. readln(n);
  45. for i:=1 to n do
  46. begin
  47. read(temp);
  48. put(temp);
  49. end;
  50. for i:=1 to n-1 do
  51. begin
  52. a:=get;
  53. b:=get;
  54. inc(sum,a+b);
  55. put(a+b);
  56. end;
  57. writeln(sum);
  58. close(input);close(output);
  59. end.