#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
#define y1 y11
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
const int maxn=1e3+;
double x1[maxn];
double y1[maxn];
double x2[maxn];
double y2[maxn];
vector<double> vx;
vector<double> vy;
double x[maxn];
double y[maxn];
struct node { int yl,yr,k; }pp[maxn];
vector<node> vxxx[maxn];
double tree[*maxn];
double ans[*maxn];
int lazy[*maxn]; int tot=;
void push_up(int rt) { tree[rt]=tree[rt<<]+tree[rt<<|]; }
//void push_down(int rt,int len) { lazy[rt<<1]+=lazy[rt]; lazy[rt<<1|1]+=lazy[rt]; lazy[rt]=0; }
void build(int rt,int l,int r)
{
if(l==r) { tot++; tree[l]=vy[tot]-vy[tot-]; return ; }
int m=(l+r)>>; build(ls); build(rs);push_up(rt);
}
void update(int p,int delta,int rt,int l,int r)
{
if(l==r) { tree[rt]+=delta; return ; }
int m=(l+r)>>;
if(p<=m)update(p,delta,ls);
else update(p,delta,rs);
push_up(rt);
}
void Update(int L,int R,int delta,int rt,int l,int r)
{
if(L<=l&&r<=R) { lazy[rt]+=delta; return ; }
if(lazy[rt]) push_down(rt,r-l+);
int m=(l+r)>>;
if(L<=m)Update(L,R,delta,ls);
if(R>m)Update(L,R,delta,rs);
push_up(rt);
}
int main()
{
int cnt=;
int n;
while()
{
scanf("%d",&n); if(n==) break;
for(int i=;i<=n;i++) scanf("%lf %lf %lf %lf",&x1[i],&y1[i],&x2[i],&y2[i]);
for(int i=;i<=n;i++)
{
vx.push_back(x1[i]);
vx.push_back(x2[i]);
vy.push_back(y1[i]);
vy.push_back(y2[i]);
}
sort(vx.begin(),vx.end()); vx.erase(unique(vx.begin(),vx.end()),vx.end());
for(int i=;i<vx.size();i++) x[i]=vx[i];
sort(vy.begin(),vy.end()); vy.erase(unique(vy.begin(),vy.end()),vy.end());
for(int i=;i<vy.size();i++) y[i]=vy[i];
for(int i=;i<=n;i++)
{
int k=lower_bound(vx.begin(),vx.end(),x1[i])-vx.begin();
node p; p.yl=y1[i]; p.yr=y2[i]; p.k=;
vxxx[k].push_back(p);
k=lower_bound(vx.begin(),vx.end(),x2[i])-vx.begin();
p.k=-;
vxxx[k].push_back(p);
}
int m=vy.size()-;
build(,,m);
double ans=;
for(int i=;i<vx.size();i++)
{
if(i==)
{
for(int j=;j<=vxx[i].size();j++)
{
node p=vxxx[i][j];
int l=lower_bound(vy.begin(),vy.end(),p.yl)-vy.begin();
int r=lower_bound(vy.begin(),vy.end(),p.yr)-vy.begin();
update(l,r,p.k,,,m);
}
}
}
}
}

最新文章

  1. 13.linux中断处理程序
  2. Qt 工程 pro文件
  3. 家族_NOI导刊2010普及(10)
  4. Java Web容器的启动与处理请求的过程
  5. php 函数积累第一天
  6. 【Android Developers Training】 88. 使用备份API
  7. Java获取当前的年月
  8. RocketMQ生产消费模型选择
  9. Day3 /2-4.10!一天水完毕设,焦虑略减,flag不能倒!
  10. 软件工程-CMM与CMMI
  11. webStorm2018激活的方法
  12. 前端框架之Vue(4)-Class与Style绑定
  13. Jquery ajax回调函数不执行
  14. 失踪的7(P1590&NOIP水题测试(2017082301))
  15. uc浏览器app点评
  16. PAT The Best Rank[未作]
  17. [php] cookie 跨域共享
  18. linux内核网络接收数据流程图【转】
  19. This content database has a schema version which is not supported in this farm.
  20. [转]windows10 1703 鼠标右键打开命令提示符cmd

热门文章

  1. Spring Boot 2集成Redis
  2. Bioconductor软件安装与升级
  3. vue--使用vue-cli构建项目
  4. jquery 判断元素是否可见
  5. python中使用configparser库,实现配置文件的读取
  6. Eslint 从入门到放弃
  7. 超轻量级Json框架SmartObject
  8. React文档(九)list和key
  9. mysql数据库的基础操作
  10. Java入门自学笔记