CF93B End of Exams

题目描述

学生们都喜欢庆祝假期,尤其是考试结束的那一天! 尽管 Igor K. 与他的同学们不同,没有通过编程测试,但他还是决定邀请大家一起去咖啡馆,每人喝一瓶……新鲜的牛奶。当这 $m$ 个朋友进入咖啡馆时,发现菜单上有 $n$ 种不同的牛奶,因此他们点了 $n$ 瓶牛奶——每种各一瓶。已知每瓶牛奶的体积相同,都是 $w$。 牛奶送上来后,他们决定把所有的牛奶平均分到 $m$ 个杯子里,让每个人都能喝到一杯。作为没有通过测试的惩罚,Igor 被指派来分牛奶。他表示担心自己会搞混,建议这样分配:每瓶牛奶只分到不超过两个杯子里。朋友们同意了,但他们突然遇到了一个新问题——到底该怎么分才行呢? 请你帮帮他们,编写程序帮助他们尽快把牛奶分好! 注意,由于 Igor 有着无比精准的眼力和稳定的手,他能任意将一瓶牛奶中的任意分数体积倒进任意杯子。

输入格式

输入的唯一一行包含三个整数 $n$、$w$ 和 $m$,分别表示点了多少瓶牛奶、每瓶的体积和朋友的总数($1 \leq n \leq 50$,$100 \leq w \leq 1000$,$2 \leq m \leq 50$)。

输出格式

如果存在分配方案使得每瓶牛奶只分到不超过两个杯子,输出第一行为 "YES";否则输出 "NO"。 如果有解,则接下来输出 $m$ 行,其中第 $i$ 行描述第 $i$ 个学生杯子的内容。每行由一个或多个形如 “$b$ $v$” 的对组成,表示从第 $b$ 瓶中倒入 $v$ 单位的牛奶到第 $i$ 个杯中($v>0$,$1\leq b \leq n$)。每行内 $b$ 必须互不相同。 如果存在多种方案,输出任意一种即可。实数 $v$ 需保留至少 6 位小数。

说明/提示

由 ChatGPT 5 翻译