平面割线平分点(构造)--牛客第三场-- Magic Line
题意:
给你n个点的坐标,让你给出两个点,这两个点的连线可以平分这些点。
思路:
先按y的大小排序,在按x的小排序,再搞一下就行了。如下图:
1 #include <bits/stdc++.h> 2 using namespace std; 3 struct poi{ 4 int x; 5 int y; 6 }p[1005]; 7 bool cmp(struct poi a,struct poi b) 8 { 9 if(a.y==b.y) 10 return a.x<b.x; 11 else 12 return a.y>b.y; 13 } 14 int main() 15 { 16 int t; 17 cin >> t; 18 while(t--) 19 { 20 int n; 21 scanf("%d",&n); 22 for(int i=1;i<=n;i++) 23 { 24 scanf("%d%d",&p[i].x,&p[i].y); 25 } 26 sort(p+1,p+1+n,cmp); 27 printf("%d %d %d %d\n",2005+p[n/2].x,p[n/2].y+1,-2004+p[n/2].x,p[n/2].y-1); 28 } 29 return 0; 30 }