代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
struct node
{
int x1,y1,x2,y2;
int w;
}a[maxn],b[maxn];
int cmp(node x,node y)
{
return x.w>y.w;
}
int tmp=0;
int tmp1=0;
int ans;
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1==x2)
{
if(y1>y2)
swap(y1,y2);
a[++tmp1]=(node){x1,y1,x2,y2,abs(y1-y2)};
}
else
{
if(x1>x2)
swap(x1,x2);
b[++tmp]=(node){x1,y1,x2,y2,abs(x1-x2)};
}
}
sort(a+1,a+tmp1+1,cmp);
sort(b+1,b+tmp+1,cmp);
for(int i=1;i<=tmp;i++)
{
for(int j=1;j<=tmp1;j++)
{
if(a[j].w/2<ans)
break;
if(b[i].x1<a[j].x1&&b[i].x2>a[j].x2&&b[i].y1>a[j].y1&&b[i].y2<a[j].y2)
ans=max(ans,min(min(a[j].y2-b[i].y1,b[i].y1-a[j].y1),min(b[i].x2-a[j].x1,a[j].x1-b[i].x1)));
}
if(b[i].w/2<ans)
break;
}
if(!ans)
printf("Human intelligence is really terrible");
else
printf("%d",ans);
return 0;
}
来源:zr