Если никто более умных мыслей не предложит, можно просто перебрать все способы что-то посчитать за
операций с помощью сложения, вычитания и унарного вычитания. Каждый способ — это ориентированный ациклический граф, где вершины без исходящих рёбер — это исходные переменные и
, а из каждой другой вершины исходит 2 ребра. Причём такая вершина помечена "
" или "
", во втором случае ещё указан порядок на исходящих рёбрах. Самим вершинам соответствуют арифметические выражения. Для
операций таких графов не больше
(слагаемое
— это когда складываем число с собой).
Можно попробовать считать унарное вычитание бесплатным, тогда вершина 0 не нужна и можно считать, что вершинам соответствуют выражения с точностью до знака. На исходящих рёбрах из вершин с "
" порядок тоже не нужен, всего графов не больше
. Это уже совсем за разумное время перебирается.