https://ac.nowcoder.com/acm/contest/883/H
题意:给定N个点的坐标 N是个偶数 画一条线 要求将这N个点分开 一边一半
要求这条线不能穿过点 给出这条线上的两个左边
思路:按照X排序 取极限 具体看咖啡鸡的代码 再%一次咖啡鸡 太强了
如果两个点在同一条竖直线上 这个代码需要想明白
#include<algorithm>
#include<iostream>
#include<vector>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<ctime>
#include<map>
#include<stack>
#include<set>
#include<cstring>
#include<sstream>
#include<queue>
using namespace std;
typedef long long ll;
const int maxn = 9e8;
typedef pair<int, int> pi;
pi arr[1005];
int main() {
int n, t;
cin >> t;
while (t--) {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i].first >> arr[i].second;
}
sort(arr, arr + n);
if (arr[n / 2 - 1].first < arr[n / 2].first) {//如果中间的两个点不在同一条y上
printf("%d %d %d %d\n", arr[n / 2 - 1].first, maxn, arr[n / 2], -maxn);//从左上到右下(几乎还是一条竖直的线)
}
else {//在同一条Y上
printf("%d %d %d %d\n", arr[n / 2].first - 1, arr[n / 2].second + maxn, arr[n / 2].first + 1, arr[n / 2 - 1].second - maxn);
}
}
return 0;
}







Comments | NOTHING