預處理。
#include<cstdio>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int inf=0x7fffffff;
const int maxn=100005;
int x1[maxn],x2[maxn],y1[maxn],y2[maxn];
void insertmin(int a[2],int x)
{
if(x<a[0])swap(x,a[0]);
if(x<a[1])swap(x,a[1]);
}
void insertmax(int a[2],int x)
{
if(x>a[0])swap(x,a[0]);
if(x>a[1])swap(x,a[1]);
}
int exclude(int a[2],int x)
{
if(a[0]!=x)return a[0];
return a[1];
}
int main()
{
int casen;
scanf("%d",&casen);
while(casen--)
{
int left[2]={-inf,-inf};
int right[2]={inf,inf};
int bottom[2]={-inf,-inf};
int top[2]={inf,inf};
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d%d%d",&x1[i],&y1[i],&x2[i],&y2[i]);
insertmax(left,x1[i]);
insertmin(right,x2[i]);
insertmax(bottom,y1[i]);
insertmin(top,y2[i]);
}
if(n==1)
{
printf("0\n");
}
else
{
int ret=0;
for(int i=0;i<n;i++)
{
int dx=exclude(right,x2[i])-exclude(left,x1[i]);
if(dx<0)
dx=0;
int dy=exclude(top,y2[i])-exclude(bottom,y1[i]);
if(dy<0)
dy=0;
ret=max(ret,dx*dy);
}
printf("%d\n",ret);
}
}
return 0;
}