Присоединиться

11 класс·высокий уровень

Определите максимально возможную сумму всех чисел в третьей группе.

Условие

Набор данных состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел в первой группе должна быть чётной, во второй — нечётной. Определите максимально возможную сумму всех чисел в третьей группе. Входные данные.

Файл AФайл BПервая строка входного файла содержит число N — общее количество троек в наборе. Каждая из следующих N строк содержит три натуральных числа, не превышающих 10 000.Пример входного файла:31 2 35 12 46 9 7Для указанных данных искомая сумма равна 24, она соответствует такому распределению чисел по группам: (1, 5, 6), (2, 4, 7), (3, 12, 9).Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B. Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго. Ответ:

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Последовательно считывая данные из файла, будем прибавлять к первой сумме (переменная sumAns) максимальное число в тройке, к третьей сумме (переменная sum3) минимальное число в тройке, а ко второй сумме (переменная sum2) оставшееся число в тройке. Также в переменную minDif будем записывать значение минимальной нечётной разницы между между числами, накапливаемыми в первой сумме, и одним из чисел, накапливаемых в других суммах. Таким образом, если в переменных sum2 и sum3 по окончании работы программы одновременно будут два нечётных числа или два чётных числа, будем отнимать от искомой суммы значение переменной minDif. Приведём решение задачи на языке Pascal.var x, y, z: integer;n: integer;sumAns, sum2, sum3: integer;minDif: integer;f: text;begin assign(f,'C:\27-B.txt'); reset(f); readln(f, n); sumAns := 0; sum2 := 0; sum3 := 0; minDif := 20001; while not eof(f) do begin readln(f, x, y, z); if (x >= y) and (x >= z) then begin sumAns := sumAns + x; if (y >= z) then begin sum2 := sum2 + y; sum3 := sum3 + z; end else begin sum3 := sum3 + y; sum2 := sum2 + z; end; if (((abs(x - y)) mod 2 <>

Осталось ещё 14 шагов

  1. and (abs(x - y) < minDif)) then minDif :=…

  2. and (abs(x - z) < minDif)) then minDif :=…

  3. and (abs(y - x) < minDif)) then minDif :=…

  4. and (abs(y - z) < minDif)) then minDif :=…

  5. and (abs(z - x) < minDif)) then minDif :=…

  6. and (abs(z - y) < minDif)) then minDif :=…

  7. Примечание. Путь к файлу необходимо указать…

  8. and (abs(x - y) < minDif): minDif = abs(x…

  9. and (abs(x - z) < minDif): minDif = abs(x…

  10. and (abs(y - x) < minDif): minDif = abs(y…

  11. and (abs(y - z) < minDif): minDif = abs(y…

  12. and (abs(z - x) < minDif): minDif = abs(z…

  13. and (abs(z - y) < minDif): minDif = abs(z…

  14. == (sum_a % 2): print(sum_max…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Программирование»

Определите максимально возможную сумму всех чисел в третьей группе. — решение с объяснением | Lom Ai