code:

#include <bits/stdc++.h>
#define N 100060
#define M 1000000
#define lson x<<1
#define rson x<<1|1
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,num[N*10],ans=N,X0,X1;
struct node
{
int x0,x1;
}t[N*10*4];
struct Point
{
int x,y;
friend bool operator<(Point a,Point b) { return a.y<b.y; }
}a[N];
void pushup(int x)
{
t[x].x0=t[lson].x0+t[rson].x0;
t[x].x1=t[lson].x1+t[rson].x1;
}
void build(int x,int l,int r)
{
if(l==r)
{
t[x].x0=num[l];
t[x].x1=0;
return;
}
int mid=(l+r)>>1;
build(lson,l,mid);
build(rson,mid+1,r);
pushup(x);
}
void update(int x,int l,int r,int p)
{
if(l==r)
{
t[x].x0--,t[x].x1++;
return;
}
int mid=(l+r)>>1;
if(p<=mid) update(lson,l,mid,p);
else update(rson,mid+1,r,p);
pushup(x);
}
int ask(int x,int l,int r,int x0,int x1)
{
if(l==r) return l;
int mid=(l+r)>>1;
int sum0=x0+t[lson].x0,sum1=x1+t[lson].x1;
if(max(sum0,sum1)>=max(t[1].x0-sum0,t[1].x1-sum1))
{
return ask(lson,l,mid,x0,x1);
}
else
{
return ask(rson,mid+1,r,sum0,sum1);
}
}
void qsum(int x,int l,int r,int L,int R)
{
if(L>R) return;
if(l>=L&&r<=R)
{
X0+=t[x].x0;
X1+=t[x].x1;
return;
}
int mid=(l+r)>>1;
if(L<=mid) qsum(lson,l,mid,L,R);
if(R>mid) qsum(rson,mid+1,r,L,R);
}
int main()
{
// setIO("input");
int i,j;
scanf("%d",&n);
for(i=1;i<=n;++i) scanf("%d%d",&a[i].x,&a[i].y), num[a[i].x]++;
sort(a+1,a+1+n);
build(1,1,M);
for(i=1,j;i<=n;i=j)
{
j=i;
while(j<=n&&a[j].y==a[i].y) update(1,1,M,a[j].x),++j;
int pos=ask(1,1,M,0,0);
X0=0,X1=0,qsum(1,1,M,1,pos);
ans=min(ans,max(X0,X1));
X0=0,X1=0,qsum(1,1,M,1,pos-1);
ans=min(ans,max(t[1].x0-X0,t[1].x1-X1));
}
printf("%d\n",ans);
return 0;
}

  

最新文章

  1. Hbase+ Phoenix搭建教程
  2. go语言 类型:数组切片
  3. python基础_制作多级菜单_(运用:字典_列表_元组等知识)
  4. TortoiseSVN安装使用
  5. appium+python:自己写的一个滑动控件的方式
  6. .net学习笔记----Asp.net的生命周期之一应用程序生命周期
  7. MySQL复制表结构表数据
  8. C++11类型推导
  9. Windows server2008/2012 安装oracle 11 创建实例HANG住在百分之2
  10. RHEL7重置root密码
  11. Monthly Expense(二分) 分类: 二分查找 2015-06-06 00:31 10人阅读 评论(0) 收藏
  12. 浏览器桌面通知(notifications)
  13. python学习笔记之六:更加抽象
  14. 八、VueJs 填坑日记之参数传递及内容页面的开发
  15. 【BZOJ3926】诸神眷顾的幻想乡(后缀自动机)
  16. springboot 的部分细节
  17. 使用 redis-dump 批量导入导出数据
  18. 访问注解(annotation)的几种常见方法
  19. html5 data-*自定义属性取值
  20. C语言利用SMTP协议发送邮件

热门文章

  1. JAVAWEB之增删改查
  2. 集成开发环境(IDE)
  3. Django中一些常用的文档段落
  4. C# 练习题 利用条件运算符的嵌套来完成分数等级划分
  5. C# 填充客户端提交的值到T对象
  6. .Net调用ffmpeg对视频截图
  7. C#读写修改设置调整UVC摄像头画面-缩放
  8. pacman 命令详解
  9. spark源码阅读--shuffle过程分析
  10. Workerman启动与停止相关命令