第三场 H题的一些疑问
将坐标先按照y排序,y相同的再按照x排序,找到中间的两个y坐标,如果两个y不一样,那么就直接构造这样一条在两个y之间的直线
如果两个y一样,构造一条在y+1,y-1之间的直线,同时直线经过这两个点的中点
这样为什么不对呢?
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1e5 + 5;
const int inf = 0x3f3f3f3f;
struct p{
int x, y;
bool operator<(const p &o)const{
if(y==o.y) return x<o.x;
return y < o.y;
}
}a[N];
int n;
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d%d", &a[i].x, &a[i].y);
sort(a+ 1, a + n + 1);
if (a[n / 2].y != a[n / 2 + 1].y)
{
printf("%d %d %d %d\n", -100000000, a[n / 2].y, 100000000, a[n / 2 + 1].y);
}
else
{
int x1 = a[n / 2].x, x2 = a[n / 2 + 1].x;
printf("%d %d %d %d\n", -100000000, a[n / 2].y-1, x1+x2+100000000, a[n / 2 + 1].y+1);
}
}
return 0;
}