Взаимоучет долгов
Из-за экономического кризиса многие предприятия не могут получить долги от покупателей и рассчитаться с продавцами за свои долги. Банк намерен уменьшить общий долг своих клиентов, выполнив взаимозачет долгов. Для этого банк может изменять долги клиентов любым образом при условии, что для каждого клиента останется неизменным сальдо - разница между суммой долгов ему и суммой его долгов.
Написать программу, которая преобразует заданный список долгов в имеющий как можно меньшую общую сумму долгов.
Входные данные
Ваша программа должна прочитать входные данные для нескольких тестов из одного текстового ASCII-файла. Данные для различных тестов отделены пустой строкой. Каждая строка файла соответствует одному долговому обязательству и содержит 3 натуральных числа: номер должника, номер предприятия, которому он должен, и сумму долга. Соседние числа отделены пробелом.
Количество предприятий не превышает 100, денежные суммы не превышают 30000 единиц.
Выходные данные
Ваша программа должна записать результаты для всех тестов в один текстовый ASCII-файл, отделяя результаты различных тестов пустой строкой. Результат каждого теста имеет содержать список долгов, оставшихся после взаимозачетов. Этот список должен иметь такую же структуру, что и входной. За ним надо вывести список сальдо всех клиентов, которые были должниками или имели должников. Каждая строка этого списка содержит номер предприятия и его сальдо, отделенные пробелом. В конце результатов теста надо в отдельной строке вывести общую сумму долгов.