救救孩子
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
const int maxx=1000000000;
int xiu=1;
int maxxx=1000000000;
int x1,y1,x2,y2;
int n;
int tot;
int ans;
map<int,int> sum,lazy;
struct b{
int xl;int xr;int y;int f;
}bb[200005];
//int xx[100006];
int p;
bool cmp( b x,b y){
return x.y<y.y;
}
void pushup(int x,int l,int r){
if(lazy[x]>=1)
sum[x]=(r-l+1);
else
if(l!=r)
sum[x]=sum[x<<1]+sum[x<<1|1];
else
sum[x]=0;
}
void update(int root,int l,int r,int L,int R,int f){
if(L<=l&&r<=R){
lazy[root]+=f;
pushup(root,l,r);
return ;
}
int mid=(l+r)>>1;
if(L<=mid) update(root<<1,l,mid,L,R,f);
if(R>mid) update(root<<1|1,mid+1,r,L,R,f);
pushup(root,l,r);
}
int xm,xmm;
int main(){
xm=1000000001;
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
bb[++p]=(b){x1,x2,y1,1};
bb[++p]=(b){x1,x2,y2,-1};
xm=min(xm,x1);
xmm=max(xmm,x2);
// xx[i*2]=x1;
// xx[i*2-1]=x2;
}
sort(bb+1,bb+p+1,cmp);
//sort(xx+1,xx+p+1);
//p=unique(xx+1,xx+1+n+n)-1-xx;
n<<=1;
for(int i=1;i<=n;++i){
// cout<<i<<endl;
ans+=(bb[i].y-bb[i-1].y)*sum[1];
update(1,xm,xmm,bb[i].xl,bb[i].xr-1,bb[i].f);
}
cout<<ans;
return 0;
}