Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program D;
- type
- ArrayOfNumbers = array of Integer;
- procedure ShiftOfArray(var ShiftArray : ArrayOfNumbers; M1, M2 : Integer);
- var
- temp, k: Integer;
- begin
- temp := ShiftArray[M1];
- for k := M1 downto (M2 + 1) do
- ShiftArray[k] := ShiftArray[k - 1];
- ShiftArray[M2] := temp;
- end;
- procedure ReadArray(var MyArray : ArrayOfNumbers; N: Integer);
- var
- i : Integer;
- begin
- SetLength(MyArray, N);
- for i := 0 to High(MyArray) - 1 do
- read(MyArray[i]);
- i := N - 1;
- ReadLn(MyArray[i]);
- end;
- function SearchMax(MyArray: ArrayOfNumbers; Z: Integer ): Integer;
- var
- i, MI, Max : Integer;
- begin
- Max := MyArray[0];
- MI := 0;
- for i := 1 to Z do
- if MyArray[i] >= max then
- begin
- Max := MyArray[i];
- MI := i;
- end;
- SearchMax := MI;
- end;
- procedure Main;
- var
- A, B : ArrayOfNumbers;
- i, MIA, MIB, N, Sum: Integer;
- MA2, MB2 : Integer;
- Check : Boolean;
- begin
- ReadLn(N);
- ReadArray(A, N);
- ReadArray(B, N);
- i := N - 1;
- MIA := SearchMax(A, i);
- MIB := SearchMAx(B, i);
- MA2 := MIA;
- MB2 := MIB;
- Check := False;
- repeat
- MIA := SearchMax(A, i);
- MIB := SearchMAx(B, i);
- if MIA > MIB then
- begin
- ShiftOfArray(A, MIA, MIB);
- MA2 := MIA;
- MB2 := MIB;
- Check := True;
- end
- else
- if MIA < MIB then
- begin
- MA2 := MIA;
- MB2 := MIB;
- ShiftOfArray(A, MIB, MIA);
- Check := True;
- end
- else
- begin
- Dec(i);
- if (MA2 > MIA) and (MA2 < MIA)
- or (MA2 < MIA) and (MA2 > MIA) then
- break;
- Check := False;
- end;
- until Check or (i = 1);
- Sum := 0;
- for i := 0 to (N - 1) do
- Sum := Sum + A[i]*B[i];
- Write(Sum);
- readln;
- end;
- begin
- Main;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement