1) Допустим, бумагу мы сложим в бак 3. Это будет 83 + 58 = 141. Тогда в бак 2 надо сложить стекло или жесть.
1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 137 + 170 = 448 перемещений.
1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139. Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183. Всего 141 + 139 + 183 = 463 > 448.
2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141. 2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 150 + 170 = 461 > 448.
2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183. Тогда в бак 3 кладем жесть. 64 + 95 = 159 Всего 141 + 183 + 159 = 483 > 448.
3) Положим бумагу в бак 1. Это будет 83 + 83 = 166. 3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137. Тогда жесть пойдет в бак 3. 64 + 95 = 159. Всего 166 + 137 + 159 = 465 > 448.
3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150. Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139. Всего 166 + 150 + 139 = 455 > 448.
Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам. ответ: минимальное количество перемещений равно 448.
matterfixed343
06.06.2020
Const n = 10;
var a, b, c: array[1..n] of integer; i, j, kb, kc, t: integer;
begin Randomize; Writeln('Исходный массив'); kb := 0; kc := 0; for i := 1 to n do begin a[i] := random(101) - 50; Write(a[i]:4); if a[i] < 0 then begin Inc(kb); b[kb] := a[i] end else begin Inc(kc); c[kc] := a[i] end end; Writeln; { теперь массив b содержит отрицательныые элементы, с - остальные } for i := 1 to kb - 1 do for j := 1 to kb - 1 do if b[j] > b[j + 1] then begin t := b[j]; b[j] := b[j + 1]; b[j + 1] := t end; { сливаем массивы b и c в массив а} i := 0; for j := 1 to kb do begin i := i + 1; a[i] := b[j] end; for j := 1 to kc do begin i := i + 1; a[i] := c[j] end; Writeln('Результирующий массив'); for i := 1 to n do Write(a[i]:4); Writeln end.
63:2=31 63-62остаток 1
31:2=15 31-30остаток 1
И т.д
ответ: 1111110