Пакет переводов со строгой гарантией
Условие
Банк обрабатывает пакеты переводов. Пакет применяется целиком или не применяется вовсе. Перевод a c x снимает x со счёта a и зачисляет на c (возможно a = c). Перевод невозможен, если одного из счетов не существует или на a в этот момент (с учётом предыдущих переводов пакета) меньше x. Если какой-то перевод невозможен, пакет отклоняется, и балансы остаются как до пакета.
Для каждого пакета выведите APPLIED или REJECTED i, где i номер первого невозможного перевода в пакете (с 1). В конце выведите все счета по возрастанию имён с балансами.
Ввод: n (1 ≤ n ≤ 200) и n строк имя баланс, затем число пакетов b (1 ≤ b ≤ 300); каждый пакет: k (1 ≤ k ≤ 20) и k строк a c x. Балансы и суммы до 10⁶.
Вывод: b строк с результатами, затем n строк балансов.
Пример 1
Ввод:
2
ann 100
bob 0
3
2
ann bob 60
bob ann 10
2
ann bob 30
ann bob 30
1
bob bob 71
Вывод:
APPLIED
REJECTED 2
REJECTED 1
ann 50
bob 50
Пример 2
Ввод:
1
x 5
1
1
x x 5
Вывод:
APPLIED
x 5
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Исключения или коды ошибок
Следующий вопрос
Журнал транзакций: ошибки через исключения