一条直线如果覆盖至少 k 个点,就计入答案。
注意:若 k=1,任意经过某个关键点的直线都合法,因此答案是无限条。代码中输出 Infinity。如果评测保证输出为整数,通常不会出现 k=1。
对于 k≥2,任意一条合法直线一定可以由其中任意两个点唯一确定。
因此可以枚举所有点对 (i,j),得到一条直线,再统计所有点中有多少点在这条直线上。如果数量不少于 k,就把这条直线加入集合去重。
小 A 最近在学习计算几何,他非常喜欢连线,尤其喜欢覆盖很多个关键点的线。
现在有一个二维平面,其中有 n 个关键点,第 i 个点的坐标为 (xi,yi),这n 个关键点的坐标两两不同。
作为一个连线爱好者,小 A 迫不及待地开始在平面中连线,如果一条直线覆盖了至少 k 个点,那么小 A 就认为这条直线是好的。
那么小 A 想知道,平面中有几条直线是好的。
第一行两个正整数 n,k(1≤k≤n≤300)
接下来 n 行,每行两个正整数 xi,yi(1≤xi,yi≤300)
输出一行一个正整数,表示答案。
输入
5 2
0 0
2 0
0 2
2 2
1 1
输出
6
说明
合法的六条直线的解析式如下:
x=0
x=2
y=0
y=2
y=x
y=2−x