直接上code
int m, n;
struct point
{
int x, y;
} wo[205];
bool cmp(point a, point b)
{
if (a.x < b.x) return true;
if (a.x == b.x) return a.y < b.y;
return false;
}
int main()
{
int cases, i, j, k;
scanf("%d", &cases);
while (cases--) {
scanf("%d%d", &n, &m);
for (i = 0; i < n; ++i) {
scanf("%d%d", &wo[i].x, &wo[i].y);
}
sort(wo, wo + n, cmp);
if (m == 1) {
printf("4\n");
continue;
}
int min = 0x7fffffff;
for (i = 0; i <= n - m; ++i) {
for (j = i + m - 1; j < n; ++j) {
int index = 0;
int tmp[205];
for (k = 0; k < n; ++k) {
if (wo[k].x >= wo[i].x && wo[k].x <= wo[j].x) {
tmp[index++] = wo[k].y;
}
}
sort(tmp, tmp + index);
for (k = 0; k <= index - m; ++k) {
int left = wo[i].x;
int right = wo[j].x;
int up = tmp[k + m - 1];
int down = tmp[k];
int s = (right - left + 2) * (up - down + 2);
if (s < min) min = s;
}
}
}
printf("%d\n", min);
}
return 0;
}