eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Взаимоучет долгов

Взаимоучет долгов

Из-за экономического кризиса многие предприятия не могут получить долги от покупателей и рассчитаться с продавцами за свои долги. Банк намерен уменьшить общий долг своих клиентов, выполнив взаимозачет долгов. Для этого банк может изменять долги клиентов любым образом при условии, что для каждого клиента останется неизменным сальдо - разница между суммой долгов ему и суммой его долгов. Написать программу, которая преобразует заданный список долгов в имеющий как можно меньшую общую сумму долгов. \InputFile Ваша программа должна прочитать входные данные для нескольких тестов из одного текстового ASCII-файла. Данные для различных тестов отделены пустой строкой. Каждая строка файла соответствует одному долговому обязательству и содержит \textbf{3} натуральных числа: номер должника, номер предприятия, которому он должен, и сумму долга. Соседние числа отделены пробелом. Количество предприятий не превышает \textbf{100}, денежные суммы не превышают \textbf{30000} единиц. \OutputFile Ваша программа должна записать результаты для всех тестов в один текстовый ASCII-файл, отделяя результаты различных тестов пустой строкой. Результат каждого теста имеет содержать список долгов, оставшихся после взаимозачетов. Этот список должен иметь такую же структуру, что и входной. За ним надо вывести список сальдо всех клиентов, которые были должниками или имели должников. Каждая строка этого списка содержит номер предприятия и его сальдо, отделенные пробелом. В конце результатов теста надо в отдельной строке вывести общую сумму долгов.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
1 2 100
2 3 50
3 1 75

1 2 15
2 3 11
5 1 14
Выходные данные #1
1 2 25
3 2 25
1 -25
2 50
3 -25
50

1 2 1
5 2 3
5 3 11
1 -1
2 4
3 11
5 -14
15