#include <iostream>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
const int maxn = 107;
struct Node
{
int x, y;
bool operator<(const Node& input) {
return y < input.y || (y == input.y&& x < input.x);
}
}nodes[maxn];
int xpos[maxn],n,w,h;
int main()
{
int t;
cin >> t;
while (t--) {
cin >> n >> w >> h;
for (int i = 1; i <= n; i++) {
cin >> nodes[i].x >> nodes[i].y;
xpos[i] = nodes[i].x;
}
//添加边界
xpos[0] = 0; xpos[n + 1] = w;
sort(nodes + 1, nodes + n + 1);
sort(xpos , xpos + n + 2);
int ansX = 0, ansY = 0, ansLen = 0;
for (int i = 0; i <= n + 1 ; i++) {
for (int j = i + 1; j <= n + 1 ; j++) {
//枚举左右边界
int w1 = xpos[j] - xpos[i];
int y = 0,h1 = 0;
//枚举上下边界
for (int k = 1; k <= n; k++) {
if (nodes[k].x > xpos[i] && nodes[k].x < xpos[j]) {
h1 = min(w1, nodes[k].y - y);
if (h1 > ansLen) {
ansLen = h1;
ansX = xpos[i];
ansY = y;
}
y = nodes[k].y;
}
}
h1 = min(w1, h - y);
if (h1 > ansLen) {
ansLen = h1;
ansX = xpos[i];
ansY = y;
}
}
}
cout << ansX << " " << ansY << " " << ansLen << endl;
if (t) cout << endl;
}
return 0;
}
习题8-19(uva-1312)
最新推荐文章于 2023-12-02 13:59:34 发布