#591. 棋子

棋子

说明

给定一个无穷大的棋盘,上面有一些棋子,而在你的手里有无穷多个棋子。然后如果你看到三个棋子组成了一个两边平行于坐标轴的矩形的三个顶点,而第四个顶点上没有棋子,那么你就要在那个顶点上放一个棋子,一直到没有可以放的位置为止。

那么问题来了,你可不可以无限的放下去呢?如果不能,请输出棋盘上最后的棋子数量。

输入格式

第一行一个整数n表示有n个棋子一开始就在棋盘上。

接下来n行,每行都表示一个棋子的坐标,其中x坐标在前,y坐标在后。

输入数据可能会出现开始时同一个位置放置了多个棋子的情况,这些棋子只计算为一个棋子。


对于40%的数据,n<=5000

对于100%的数据,n<=200000

Xy都在longint(Pascal)int(C++)的范围内

输出格式

一行一个整数,如果能无限放下去,输出-1,否则输出最后的棋子数(不保证范围)
3
0 0
0 1
1 0
4

Source

图论 洛谷