# A[i].number:=Num(A[i].part);

A[i].number:=Num(A[i].part); end; &lt;сортировка А&gt;; end; end; if (Rt&lt;&gt;[]) then One(t,Rt); Блок общих отсечений. Подсчитаем для каждого значения i (1?i?t) множество партий, представляемых жителями, номера которых записаны в элементах массива с i по t (массив С:array[1..N] of Sset). Тогда, если Res - текущее решение, а Rt - множество партий, требующих представления, то при Res+C[i]?Rt решение не может быть получено и эту ветку перебора следует “отсечь”. Формирование массива С. C[t]:=A[t].part; for i:=t-1 downto 1 do begin C[i]:=[];C[i]:=A[i].part+C[i+1]; end; Блок отсечений по i. Если при включении элемента с номером i в решение, значение величины Rt не изменяется, то это включение бессмысленно (A[i].part*Rt=[]). На этом мы закончим обсуждение этой, очень интересной с методической точки зрения, задачи. Заметим, что для любой вновь возникающей идеи по сокращению перебора место для ее реализации в логике определено. А именно, предобработка,

Индекс
Элементарные функции Линейные уравнения Нелинейные уравнения Случайные числа