SP10095 CAPPIZZA - Caper Pizza

题目描述

Brunno Doiuna 对于加刺山柑的披萨情有独钟,并且总是喜欢和女朋友一起分享。由于她同样喜欢刺山柑,为了避免不必要的争吵,Brunno 需要将披萨平均分成两半,每一份中都要包含相同数量的刺山柑。然而,披萨上还往往有一些胡椒粒,而 Brunno 和他的女朋友都不喜欢这些。于是,每一半也需要包含相同数量的胡椒粒。根据刺山柑和胡椒粒在披萨上的具体位置,有时候很难通过一条直线切割,使两份披萨的面积相等且含有相同数量的刺山柑和胡椒粒。你的任务是编写一个程序,根据刺山柑和胡椒粒的位置来判断是否可以进行这样一刀两半的切割。

输入格式

假设披萨是一个以原点为中心的圆形,尺寸足够大以容纳所有的刺山柑和胡椒粒。我们还假设刺山柑和胡椒粒的数量都是偶数,且切割线不会穿过任一刺山柑或胡椒粒。此外,没有任意两颗胡椒粒、两颗刺山柑,或一颗胡椒粒和一颗刺山柑与原点对齐,或者与原点形成的角度小于 $10^{-6}$ 度。 每个测试用例包含多行输入,彼此之间用空行隔开。第一行包含两个偶数 $c \ge 0$ 和 $p \ge 0$(其中 $2 \le c + p \le 100$),表示刺山柑和胡椒粒的数量。接下来的 $c$ 行中,每行为刺山柑的位置,包含两个用空格隔开的浮点数,表示其 $x$ 和 $y$ 坐标。接下来的 $p$ 行中,每行为胡椒粒的位置,同样包含两个浮点数,表示其 $x$ 和 $y$ 坐标。每个测试用例后面跟一个空行。 输入的最后一行为 `-1 -1`,标志着输入结束——对于这一行不需要输出任何内容。

输出格式

如果存在这样的切割,使得两半披萨都包含相同数量的刺山柑和胡椒粒,输出 `YES`;否则,输出 `NO`。

说明/提示

- 刺山柑和胡椒粒的总数 $c + p$ 满足 $2 \le c + p \le 100$ - $c$ 和 $p$ 均为偶数 - 切割线不会穿过刺山柑或胡椒粒 - 任意两个元素或其与原点的夹角不会小于 $10^{-6}$ 度 **样例输入** ``` 2 2 1 1 1 0 0 1 -1 1 2 2 1 1 -1 1 0 1 0.1 -1 -1 -1 ``` **样例输出** ``` YES NO ``` **本翻译由 AI 自动生成**