注意一下范围,模拟即可
原题
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
const int N = 110, M = 1e5 + 10;
typedef pair<int, int>PII;
int n;
int ans;
vector<int>v1[M];
vector<int>v2[M];
vector<PII>v3;
map<int, int>mp[M];
bool d1[M];//记录这个横坐标已经出现过
bool d2[M];//记录这个纵坐标已经出现过
int idx1, idx2;//分别记录x和y的对应值
signed main()
{
cin>>n;
while(n -- ){
int a, b;
cin>>a>>b;
a += 10000;
b += 10000;
v1[a].pb(b);
v2[b].pb(a);
v3.push_back({a, b});//记录所有出现过的点
}
//三重循环找最大面积
//要注意面积可能为负数的情况
for(auto [x, y] : v3){//遍历所有出现过的点
for(auto y1 : v1[x]){
for(auto x1 : v2[y]){
ans = max(ans, abs(y - y1) * abs(x - x1));
}
}
}
cout<<ans<<endl;
return 0;
}