payments[i] = [from, to, amount] означает, что участник from дал участнику to сумму amount, и теперь to должен её вернуть.
Теперь все хотят рассчитаться. Перевод — это любая сумма от одного участника другому, и переводить можно кому угодно, а не только тому, у кого брал. Верните наименьшее число переводов, после которых никто никому ничего не должен.payments=[[0, 1, 20], [1, 2, 20]] → 1
Участник 1 получил 20 и отдал 20 — он в расчёте. Остаётся, чтобы 2 вернул 0 двадцать: один перевод.
payments=[[0, 1, 5], [1, 0, 5]] → 0
Долги взаимно погашены, переводы не нужны.
payments=[[0, 1, 10], [0, 2, 10], [3, 0, 15]] → 3
Итог: 1 и 2 должны по 10, 0 ждёт 5, 3 ждёт 15. Никакая часть участников не сводится в ноль отдельно, поэтому нужно 3 перевода, например 1→3 на 10, 2→3 на 5 и 2→0 на 5.
payments) ≤ 8payments[i] = [from, to, amount]from, to < 12, from ≠ toamount ≤ 100payments=[[0, 1, 20], [1, 2, 20]]
1
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 66 тестов на сервере, включая скрытые.