腾讯(2)
#include <bits/stdc++.h>
using namespace std;
long long x[8],y[8];
int main(){
int T;
long long n,m,white,black,change,a,b,c,d;
scanf("%d",&T);
while(T--){
scanf("%lld%lld",&n,&m);
white=(n*m+1)/2;
black=n*m-white;
for(int i=0;i<=3;i++){
scanf("%lld%lld",&x[i],&y[i]);
}
if((x[0]+y[0])&1){//第一个长方形左下角是黑色
change=((x[1]-x[0]+1)*(y[1]-y[0]+1)+1)/2;//第一个长方形原有黑色的块数
}
else
change=(x[1]-x[0]+1)*(y[1]-y[0]+1)/2;
white+=change;
black-=change;
if((x[2]+y[2])&1)//第二个长方形左下角是黑色
change=(x[3]-x[2]+1)*(y[3]-y[2]+1)/2;//第二个长方形原有白块数
else
change=((x[3]-x[2]+1)*(y[3]-y[2]+1)+1)/2;
white-=change;
black+=change;
a=max(x[0],x[2]);
b=max(y[0],y[2]);
c=min(x[1],x[3]);
d=min(y[1],y[3]);
if(c<a||d<b)e=0LL;//没有重叠区域
if((a+b)&1)//重叠区域原本左下角是黑色
change=((c-a+1)*(d-b+1)+1)/2;
else
change=(c-a+1)*(d-b+1)/2;
black+=change;
white-=change;
printf("%lld %lld\n",white,black);
}
return 0;
}