监视奶牛
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
说明
<!DOCTYPE html> <html> <body>监视奶牛
FJ现在要监视他的N头牛,他有3架神奇的相机,可以监视一条直线上的所有事物。
现在FJ要把他的3架相机,放在在合适的位置,简单起见,监视的就是水平方向或者垂直方向。
判断是否有合适的方案,使得FJ能监视所有的奶牛。
输入格式
第一行一个整数 \(n\),表示奶牛的数量。
接下来 \(n\) 行,每行两个整数 \(x\) 和 \(y\),表示一只奶牛的坐标,坐标都不相同。
输出格式
如果可以输出1,否则输出0。
样例
输入
6
1 7
0 0
1 2
2 0
1 4
3 4
输出
1
数据范围与提示
\(N\) 的范围 [1, 50000];坐标的数值范围 [0, \(10^9\)];
样例解释:监视的3条直线为 \(y=0\),\(x=1\),\(y=4\)。
离散化:使 \(x\),\(y\) 的数据范围变成1~\(n\)的代码,时间复杂度 \(O(n \log n)\)
可能有用的离散化代码:
map<int, int> mX, mY;
int main() {
scanf("%d", &n);
int xcnt = 0, ycnt = 0, x, y;
for (int i = 1; i <= n; i++) {
scanf("%d %d", &x, &y);
if (!mX[x]) mX[x] = ++xcnt;
if (!mY[y]) mY[y] = ++ycnt;
x = mX[x], y = mY[y];
}
}
</body>
</html>
样例