SP16275 TAP2013A - On the side of the road

题目描述

在公路的一侧,有棕榈树、酒吧、阴影和其他一些东西。但这道题目中,我们只关心那些棕榈树。 安娜、阿丹、艾伦和阿曼达组织了一次旅行:当安娜和阿丹忙于诸如检查汽车、打包行李和寻找住宿等杂事时,艾伦和阿曼达则专注于最重要的工作:研究他们行程中所能观赏到的棕榈树景观。 他们正驾车行驶在一条笔直的公路上。在这个问题中,我们用 **XY** 平面上的 **Y = 0** 这条直线来表示这条路。公路的上方区域(坐标满足 **Y > 0**)分布着若干棕榈树,这些棕榈树将被表示为 **XY** 平面上的某个点,其 **Y** 坐标为正。艾伦和阿曼达观察到,从公路上的不同点可能会看到不同的棕榈树。具体来说,只有当连结这两个点的直线段不穿过其他任何棕榈树时,棕榈树才能从路上的某一点被看到。 如下图所示,空心圆点表示在第一组输入数据中的棕榈树,而实心圆点则表示道路上的一些观测点。 ![TAP2013A](https://cdn.luogu.com.cn/upload/vjudge_pic/SP16275/38ce9769160b2b2bd7b3ea1f650fdab090dbcf34.png) 从 **p** 点可以看到棕榈树 **a**、**b** 和 **d**,因为棕榈树 **c** 被 **a** 遮挡。从 **q** 点则可以看到棕榈树 **a**、**c** 和 **d**,因为棕榈树 **b** 被 **a** 遮挡。从 **r** 点可以看到所有的棕榈树,而从 **s** 点只能看到棕榈树 **a** 和 **d**,因为 **b** 和 **c** 被 **d** 遮挡。 在驾车过程中,艾伦和阿曼达热衷于讨论从不同观测点可以看到的棕榈树数量。给定一组棕榈树,当且仅当在公路上(即 **Y = 0** 的位置)存在某一点可以看到恰好 **m** 棵棕榈树时,我们认为 **m** 是一个可见的棕榈树数量。 在上面的例子中,**2**、**3** 和 **4** 是可见的棕榈树数量,分别可通过道路上的点 **s**、**p** 和 **r** 验证。而 **0** 和 **1** 不是可见数量,因为路上每个点至少可看到 **2** 棵棕榈树。没有大于 **4** 的可见数量,这是因为总棕榈树数量就是 **4**。因此,在这个例子中有 **3** 种不同的可见棕榈树数量。(注意,如果 **m** 是一个可见棕榈树数量,可能会有多个路上的点可以验证这种情况;在前面的例子中,点 **p** 和 **q** 都能够验证可见数量为 **3**,而沿 **r** 以及其他无数点则可以验证可见数量为 **4**。) 安娜和阿丹已经感到疲倦,他们希望艾伦和阿曼达能停下对棕榈树的研究,至少能去准备一些三明治。因此,需要你编写一个程序来计算道路上存在多少种不同的可见棕榈树数量。

输入格式

第一行包含一个整数 **N**,表示道路边的棕榈树数量($1 \le N \le 1000$)。接下来的 **N** 行中,每行包含两个整数 **X** 和 **Y**,表示这棵棕榈树在 **XY** 平面的坐标($1 \le X, Y \le 10^5$)。不会有两棵棕榈树在同一位置。

输出格式

输出一个整数,表示在道路上可以看到的不同棕榈树数量的种类。 **本翻译由 AI 自动生成**