Помогите, пожалуйста, написать программу в Паскале! Задано 2n целых чисел. Требуется...

0 голосов
31 просмотров
Помогите, пожалуйста, написать программу в Паскале!
Задано 2n целых чисел. Требуется разбить их на пары, так, чтобы сумма произведений чисел в парах была как можно больше.
Например, если заданы числа 1,2,3 и 4, то оптимальный способ разбиения на пары -(1,2) и (3,4). В этом случае искомая сумма равна 14. Требуется написать программу, которая по заданному числу n (1 меньше или ровно n и n меньше или ровно 100) и набору из 2n чисел выдаст их оптимальное рабиение на пары.

Информатика (810 баллов) | 31 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Var
 n,i,j,c:integer;
 mas:array[1..999] of integer;

begin
 readln(n);
 for i:=1 to 2*n do
  readln(mas[i]);
 //Группируем массив в порядке возрастания
  for i := 1 to 2*n-1 do
   for j := 1 to 2*n-i do
    if mas[j] > mas[j+1] then
    begin
     c := mas[j];
     mas[j] := mas[j+1];
     mas[j+1] := c;
    end;
 writeln('Оптимальные пары:');
 for i:=1 to 2*n do
 begin
  if i mod 2 = 1 then
   write(mas[i],' и ');
  if i mod 2 = 0 then
   writeln(mas[i]);
 end;
end.

(2.4k баллов)