Цитата(pinhead @ 6:05:2007, 02:45 )

Я так понимаю, что количество элементов массива должно быть чётным, если да то программу я написал. Выложить исходники?
если тебя не затруднит выложи пожалуйста исходники. За это время придумал новый алгоритм но который не могу реализовать. Вот он: 1) Создаем три пустых массива
2) Инициализируем результирующие массивы произвольным образом. К примеру: в первый массив - первый элемент входных данных, во второй массив - второй элемент, в третий - все остальные элементы.
3) ------ Начало очередной итерации ------
4) Вычисляем сумму элементов каждого массива (назовем сумму элементов массива "весом", чтобы много не писать).
5) Находим массивы с максимальным и минимальным весом.
6) Вычисляем разницу в весе между массивами с минимальным и максимальным весом (delta).
7) Если delta = 0 - завершаем работу. Мы добились идеального варианта решения - разница между суммами массивов равна нулю.
8) Если это не первая итерация и delta данной итерации равна delta предыдущей итерации - завершаем работу.
9) Проходим по элементам более "тяжелого" массива и находим среди них такой, значение которого максимально близко к половине значения delta. Т.е. элемент x должен удовлетворять условию: |x*2-delta| - минимальное значение среди всех элементов данного массива. Для чего это нужно: мы пытаемся найти вариант "переброса" элемента из более "тяжелого" массива в более "легкий" с тем, чтобы уменьшить разницу в весе между ними. На данном этапе перебрасывать не надо - только нашли значение.
10) Рассматриваем 3 возможных варианта:
a) |x*2 - delta| < delta (т.е. случай, когда "перебросив" элемент из одного массива в другой мы уменьшаем разницу в весе между ними). В этом случае мы удаляем x из более тяжелого массива и добавляем его в более легкий, после чего возвращаемся к шагу (4) - начинаем следующую итерацию.

|x*2 - delta| > delta. Ничего не можем поделать, сортировать дальше не получается. Завершаем работу алгоритма.
c) |x*2 - delta| = delta. Самый интересный случай. Фактически, x=delta. В данной ситуации следует перенести x из одного массива в другой (аналогично (10.a)) и попробовать еще раз выполнить пункты 8-10. При этом следует помнить, что массивы поменяются местами (т.е. самый легкий станет самым тяжелым и наоборот). Если опять попадаем в (10.c) - завершаем выполнение алгоритма, иначе - см. (10.a) и (10.

.
12) Завершение работы: имеем 3 массива, более-менее удовлетворяющих условиям задачи

Возможно у кого то есть идеи ? Заранее благодарен