Advertisement
Guest User

Untitled

a guest
Feb 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. program D;
  2.  
  3. type
  4. ArrayOfNumbers = array of Integer;
  5.  
  6. procedure ShiftOfArray(var ShiftArray : ArrayOfNumbers; M1, M2 : Integer);
  7. var
  8. temp, k: Integer;
  9. begin
  10. temp := ShiftArray[M1];
  11. for k := M1 downto (M2 + 1) do
  12. ShiftArray[k] := ShiftArray[k - 1];
  13. ShiftArray[M2] := temp;
  14. end;
  15.  
  16. procedure ReadArray(var MyArray : ArrayOfNumbers; N: Integer);
  17. var
  18. i : Integer;
  19. begin
  20. SetLength(MyArray, N);
  21. for i := 0 to High(MyArray) - 1 do
  22. read(MyArray[i]);
  23. i := N - 1;
  24. ReadLn(MyArray[i]);
  25. end;
  26.  
  27. function SearchMax(MyArray: ArrayOfNumbers; Z: Integer ): Integer;
  28. var
  29. i, MI, Max : Integer;
  30. begin
  31. Max := MyArray[0];
  32. MI := 0;
  33. for i := 1 to Z do
  34. if MyArray[i] >= max then
  35. begin
  36. Max := MyArray[i];
  37. MI := i;
  38. end;
  39. SearchMax := MI;
  40. end;
  41.  
  42. procedure Main;
  43. var
  44. A, B : ArrayOfNumbers;
  45. i, MIA, MIB, N, Sum: Integer;
  46. MA2, MB2 : Integer;
  47. Check : Boolean;
  48. begin
  49. ReadLn(N);
  50. ReadArray(A, N);
  51. ReadArray(B, N);
  52. i := N - 1;
  53. MIA := SearchMax(A, i);
  54. MIB := SearchMAx(B, i);
  55. MA2 := MIA;
  56. MB2 := MIB;
  57. Check := False;
  58. repeat
  59. MIA := SearchMax(A, i);
  60. MIB := SearchMAx(B, i);
  61. if MIA > MIB then
  62. begin
  63. ShiftOfArray(A, MIA, MIB);
  64. MA2 := MIA;
  65. MB2 := MIB;
  66. Check := True;
  67. end
  68. else
  69. if MIA < MIB then
  70. begin
  71. MA2 := MIA;
  72. MB2 := MIB;
  73. ShiftOfArray(A, MIB, MIA);
  74. Check := True;
  75. end
  76. else
  77. begin
  78. Dec(i);
  79. if (MA2 > MIA) and (MA2 < MIA)
  80. or (MA2 < MIA) and (MA2 > MIA) then
  81. break;
  82. Check := False;
  83. end;
  84. until Check or (i = 1);
  85. Sum := 0;
  86. for i := 0 to (N - 1) do
  87. Sum := Sum + A[i]*B[i];
  88. Write(Sum);
  89. readln;
  90. end;
  91.  
  92. begin
  93. Main;
  94. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement