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