记录编号 |
409824 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HNOI 2011] 数矩形 |
最终得分 |
100 |
用户昵称 |
FoolMike |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
4.536 s |
提交时间 |
2017-05-29 15:26:31 |
内存使用 |
26.41 MiB |
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<pii,ll> pt;
const int N=1510;
pii operator + (const pii &a,const pii &b){
return pii(a.first+b.first,a.second+b.second);
}
pii operator - (const pii &a,const pii &b){
return pii(a.first-b.first,a.second-b.second);
}
ll operator * (const pii &a,const pii &b){
return abs((ll)a.first*b.second-(ll)a.second*b.first);
}
ll sqr(int x){return (ll)x*x;}
ll dis(pii a){return sqr(a.first)+sqr(a.second);}
int n,id;pii p[N];
map<pt,int> M;
vector<pii> v[N*N];
int main()
{
freopen("crectangle.in","r",stdin);
freopen("crectangle.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d%d",&p[i].first,&p[i].second);
for (int i=1;i<=n;i++)
for (int j=1;j<i;j++){
pii pos=p[i]+p[j];
pt now(pos,dis(p[i]-p[j]));
int ID=M[now];
if (!ID) M[now]=ID=++id;
v[ID].push_back(p[i]-p[j]);
}
ll ans=0;
for (int ID=1;ID<=id;ID++)
for (int i=0;i<v[ID].size();i++)
for (int j=0;j<i;j++)
ans=max(ans,v[ID][i]*v[ID][j]);
printf("%lld\n",ans>>1);
return 0;
}