监视奶牛
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
说明
<!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>
样例