Advertisement
Guest User

Untitled

a guest
Aug 15th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.48 KB | None | 0 0
  1. program Project2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils;
  7. type g = record index,m:integer; end;
  8. var x,a,c:g;
  9.     h:array[1..1000] of g;
  10.     b:array[1..1000,1..2] of integer;
  11.     n,m,i,k,s:integer;
  12. procedure swap(i,j:integer);
  13. var t:g;
  14. begin
  15. t:=h[i];
  16. h[i]:=h[j];
  17. h[j]:=t;
  18. end;
  19.  
  20. procedure push(x:g);
  21. var k:integer;
  22. begin
  23. inc(n);
  24. h[n]:=x;
  25. k:=n;
  26. while (k>1) and (h[k].m<h[k div 2].m) do
  27. begin
  28. swap(k,k div 2);
  29. k:=k div 2;
  30. end;
  31. end;
  32.  
  33. function getmin:g;
  34. var k,mini:integer;
  35. minx:g;
  36. begin
  37. getmin:=h[1];
  38. h[1]:=h[n];
  39. dec(n);
  40. k:=1;
  41. while (k<=n) do
  42. begin
  43. mini:=k;
  44. minx:=h[k];
  45. if (2*k<=n) and (h[2*k].m<minx.m) then begin minx:=h[2*k]; mini:=2*k; end;
  46. if (2*k+1<=n) and (h[2*k+1].m<minx.m) then begin minx:=h[2*k+1]; mini:=2*k+1; end;
  47. if mini=k then exit;
  48. swap(mini,k);
  49. k:=mini;
  50. end;
  51. end;
  52. begin
  53. n:=0;  s:=0;
  54. k:=0;
  55. readln(m);
  56. for i:=1 to m do
  57. begin
  58. read(x.m);
  59. x.index:=i;
  60. push(x);
  61. if (i mod 3=0) or (i=m) then
  62. begin
  63. inc(k);
  64. if i=m then begin if i mod 2=1 then begin a:=getmin; b[k,1]:=a.index; s:=s+a.m;end;            end;    end;
  65. if ((i=m) and (i mod 2=0)) or (i mod 3 =0) then begin a:=getmin; c:=getmin; b[k,1]:=a.index; b[k,2]:=c.index;  if a.m>c.m then s:=s+a.m  else s:=s+c.m;         end;
  66. end;
  67. if n=2 then  begin inc(k); a:=getmin; c:=getmin; b[k,1]:=a.index; b[k,2]:=c.index;  if a.m>c.m then s:=s+a.m  else s:=s+c.m;  end;
  68. writeln(s);
  69. for i:=1 to k do
  70. begin
  71. if b[i,2]<>0 then writeln(b[i,1],' ',b[i,2])
  72.              else writeln(b[i,1]);
  73. end;
  74. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement