new file: P2862.cpp
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
int c, n;
|
||||
pair<int, int> cc[505];
|
||||
int tmpx[505], tmpy[505];
|
||||
int sum[505][505];
|
||||
int totx, toty;
|
||||
bool check(int len)
|
||||
{
|
||||
for (int i = 1; i <= totx; ++i)
|
||||
{
|
||||
int j = i;
|
||||
while (j <= totx && tmpx[j] - tmpx[i] <= len - 1)
|
||||
j++;
|
||||
j--;
|
||||
int l = 1;
|
||||
for (int k = 1; k <= toty; ++k)
|
||||
{
|
||||
if (l < k)
|
||||
l = k;
|
||||
while (l <= toty && tmpy[l] - tmpy[k] <= len - 1)
|
||||
l++;
|
||||
l--;
|
||||
if (l >= k)
|
||||
{
|
||||
int cnt = sum[j][l] - sum[i - 1][l] - sum[j][k - 1] + sum[i - 1][k - 1];
|
||||
if (cnt >= c)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
scanf("%d%d", &c, &n);
|
||||
for (int i = 1; i <= n; ++i)
|
||||
{
|
||||
scanf("%d%d", &cc[i].first, &cc[i].second);
|
||||
tmpx[i] = cc[i].first, tmpy[i] = cc[i].second;
|
||||
}
|
||||
sort(tmpx + 1, tmpx + n + 1);
|
||||
totx = unique(tmpx + 1, tmpx + n + 1) - (tmpx + 1);
|
||||
sort(tmpy + 1, tmpy + n + 1);
|
||||
toty = unique(tmpy + 1, tmpy + n + 1) - (tmpy + 1);
|
||||
memset(sum, 0, sizeof(sum));
|
||||
for (int i = 1; i <= n; ++i)
|
||||
{
|
||||
int x = lower_bound(tmpx + 1, tmpx + totx + 1, cc[i].first) - tmpx;
|
||||
int y = lower_bound(tmpy + 1, tmpy + toty + 1, cc[i].second) - tmpy;
|
||||
sum[x][y]++;
|
||||
}
|
||||
for (int i = 1; i <= totx; ++i)
|
||||
{
|
||||
for (int j = 1; j <= toty; ++j)
|
||||
{
|
||||
sum[i][j] += sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
|
||||
}
|
||||
}
|
||||
int L = 1, R = max(tmpx[totx] - tmpx[1] + 1, tmpy[toty] - tmpy[1] + 1), ans;
|
||||
while (L <= R)
|
||||
{
|
||||
int mid = (L + R) / 2;
|
||||
if (check(mid))
|
||||
ans = mid, R = mid - 1;
|
||||
else
|
||||
L = mid + 1;
|
||||
}
|
||||
|
||||
printf("%d\n", ans);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user