题目描述
平面上有 n 个点(任意两点的横坐标与纵坐标都不会相同),每个点向 x 轴 和 y 轴做垂线分别形成两个交点,两个交点和该点以及坐标原点构成一个矩形, 并覆盖矩形内的点(在边缘上的点不算被覆盖),请输出平面上所有一次也没有 被覆盖过的点。
输入
第一行一个正整数 T(T<=5),表示共有 T 组数据。
每组数据的第一行一个正整数数 n(1<=n<= 200000),表示平面上有 n 个点。
接下来 n 行每行两个正整数 x,y(1<=x,y<= 1e9)表示一个点的横纵坐标。
输出
按 x 轴坐标从小到大输出所有符合条件的点。
样例输入
1
5
8 1
17 5
9 6
12 11
13 7
样例输出
12 11
13 7
17 5
知识点
- 排序
注意情况
无
代码片段
#include<iostream>
#include<algorithm>
using namespace std;
struct A{
long long int x,y;
}ar[200005];
int com(A x,A y)
{
return x.y>y.y;
}
int main()
{
bool po=false;
long long int T,n;
cin>>T;
while(T--)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>ar[i].x>>ar[i].y;
}
sort(ar,ar+n,com);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(ar[i].y<ar[j].y&&ar[i].x<ar[j].x)
{
po=true;
break;
}
}
if(!po) cout<<ar[i].x<<" "<<ar[i].y<<endl;
po=false;
}
}
}
共同进步呀😊