SP3582 RSTAURNT - Restaurant Tab

题目描述

你和朋友们在餐厅吃完晚餐后,需要确定每个人应该支付的金额。虽然你们手头上都有一些现金和零钱,却很少有人有正好合适的零钱。你们能否通过互相找零,使得每个人最终支付的金额正好是他应付的数目?

输入格式

输入文件包含多个测试用例。每个测试用例的第一行是一个整数 $N$,表示有 $N$ 个人在餐桌上。接下来的 $N$ 行,每行包括: $x_i \ c_{i,1} \ c_{i,5} \ c_{i,10} \ c_{i,25} \ c_{i,100} \ c_{i,500} \ c_{i,1000} \ c_{i,2000} \ c_{i,5000} \ c_{i,10000}$ 其中,$x_i$ 是第 $i$ 个人应支付的金额(以分为单位);$c_{i,v}$ 表示第 $i$ 个人拥有的面值为 $v$ 分的硬币或纸币的数量。例如,第 $1$ 个人有 $c_{1,1}$ 枚一分硬币、$c_{1,5}$ 枚五分硬币等。测试用例彼此连续输入,直到遇到只包含一个数字 $0$ 的行,表示输入结束。可以假设每个人应支付的金额不会超过他们拥有的总金额(即 $x_i \leq \sum_j j \cdot c_{i,j}$),并且所有人合计的初始金额可以存储在一个有符号的32位整数中。同时,$N$ 不会超过100,000。

输出格式

对于每个测试用例,输出一行,格式为“Case #x:”,其中 x 是测试用例的编号(从1开始)。然后在输出结果中,如果能够通过重组零钱使每个人都支付正确的金额,输出“YES”,否则输出“NO”。 **本翻译由 AI 自动生成**