AT_abc422_e [ABC422E] Colinear

题目描述

在一个二维平面上有 $N$ 个点,其中 $N$ 是奇数。第 $i$ 个点的坐标是 $(x_i, y_i)$。所有点的坐标都互不相同。 请判断是否存在一条直线经过多于一半的 $N$ 个点,如果存在,请输出该直线。 对于满足约束条件的任意输入,如果存在满足条件的直线,则存在一组整数组 $a, b, c$ 使得直线方程可表示为 $ax+by+c=0$,且 $-10^{18} \leq a, b, c \leq 10^{18}$,并且 $(a, b, c) \neq (0, 0, 0)$。请输出这组 $a, b, c$。

输入格式

输入从标准输入读入,格式如下: > $N$ > $x_1$ $y_1$ > $x_2$ $y_2$ > $\vdots$ > $x_N$ $y_N$

输出格式

如果不存在满足条件的直线,输出 `No`。 如果存在满足条件的直线,输出两行。第一行输出 `Yes`,第二行按照顺序输出 $a, b, c$,用空格分隔。要求 $-10^{18} \leq a, b, c \leq 10^{18}$ 且 $(a, b, c) \neq (0, 0, 0)$。 如果有多个满足条件的答案,输出任意一个都可以。

说明/提示

### 样例解释1 直线 $2x+y-8=0$ 经过了第 2 个和第 3 个点,所以满足条件。 ### 样例解释2 不存在满足条件的直线。 ### 约束条件 - $3 \leq N \leq 5 \times 10^5$ - $N$ 是奇数。 - $-10^8 \leq x_i \leq 10^8$ - $-10^8 \leq y_i \leq 10^8$ - 如果 $i \neq j$,则 $(x_i, y_i) \neq (x_j, y_j)$。 - 所有输入值均为整数。 由 ChatGPT 5 翻译