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