题目链接
思路:显然,答案的范围可以缩小到只有学校周围的四个点。
代码:
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
using namespace std;
using ll = long long;
using PII = pair <int, int>;
using vi = vector <int>;
const int N = 2e5 + 10;
const ll mod = 1e9 + 7;
int t, n, a[N], b[N];
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
int main() {
int sx, sy;
scanf("%d%d%d", &n, &sx, &sy);
int mn = 0;
for(int i = 1; i <= n; i++) {
scanf("%d%d", &a[i], &b[i]);
}
int rx, ry;
for(int i = 0; i < 4; i++) {
int tx = sx + dx[i], ty = sy + dy[i];
if(tx < 0 || ty < 0 || tx > 1e9 || ty > 1e9) continue;
int ct = 0;
for(int j = 1; j <= n; j++) {
if(i == 0) {
if(a[j] >= tx) ct++;
}
else if(i == 1) {
if(b[j] >= ty) ct++;
}
else if(i == 2) {
if(a[j] <= tx) ct++;
}
else {
if(b[j] <= ty) ct++;
}
}
//printf("%d %d %d %d\n", i, ct, tx, ty);
if(ct > mn) {
mn = ct; rx = tx, ry = ty;
}
}
cout << mn << "\n" << rx << " " << ry;
return 0;
}