题目链接

  数组大小开到一千二百万才过- -

  可以把数先离散化再全都加到主席树中。

  对于一个区间[from,to]

  取中间点mid

  看看小于mid的数有多少个,如果个数的两倍<=to-from+1那么左边就不存在我们要找的数。

  右面同理。如果大于mid的数<=to-from+1那么右面也不存在我们要找的数。

  如果两边都不存在就return 0;

  

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#define mid ((l+r)>>1)
using namespace std; inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long rt[];
long long ls[];
long long rs[];
long long sum[];
long long q[];
long long s[];
int tot; void build(long long &o,int l,int r){
o=++tot; sum[o]=;
if(l==r) return;
build(ls[o],l,mid);
build(rs[o],mid+,r);
} void update(long long &o,int l,int r,long long last,long long p){
o=++tot;
ls[o]=ls[last]; rs[o]=rs[last]; sum[o]=sum[last]+;
if(l==r) return;
if(p<=mid) update(ls[o],l,mid,ls[last],p);
else update(rs[o],mid+,r,rs[last],p);
} int query(int from,int to,int l,int r,int p){
if(l==r) return l;
if(*(sum[ls[to]]-sum[ls[from]])>p) return query(ls[from],ls[to],l,mid,p);
if(*(sum[rs[to]]-sum[rs[from]])>p) return query(rs[from],rs[to],mid+,r,p);
return ;
} int main(){
int n=read(),m=read();
for(int i=;i<=n;++i) s[i]=q[i]=read();
sort(s+,s+n+);
int size=unique(s+,s+n+)-(s+);
build(rt[],,size);
for(int i=;i<=n;++i) q[i]=lower_bound(s+,s+size+,q[i])-s;
for(int i=;i<=n;++i) update(rt[i],,size,rt[i-],q[i]);
for(int i=;i<=m;++i){
int from=read(),to=read();
printf("%lld\n",s[query(rt[from-],rt[to],,size,to-from+)]);
}
return ;
}

最新文章

  1. ASP.NET Core 中文文档 第三章 原理(12)托管
  2. (转)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
  3. oracle 卸载步骤(图解)
  4. PHP 防止表单重复提交
  5. p::first-line { text-transform: uppercase }
  6. 20150625_Andriod_01_ListView1_条目选中
  7. tyvj1022 - 进制转换 ——进制为负数
  8. 传统企业,&quot;哀兵必胜&quot;的想法要不得
  9. 【c】time.h
  10. windows下用过VMware安装MAC OS X苹果系统
  11. UML 行为图之用例图 总结
  12. fedora23开发环境搭建手册
  13. Android TextView里直接显示图片的三种方法
  14. js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
  15. 虚拟机通信配置与Xshell连接
  16. 微信小程序路过
  17. [BZOJ3668] [Noi2014] 起床困难综合症 (贪心)
  18. tp3.2 phpexcel 简单导出多个sheet(execl表格)
  19. 20145212 罗天晨 MSF基础应用
  20. HDU 1014 G题

热门文章

  1. arcgis jsapi接口入门系列(10):图形高亮
  2. uvm_misc——杂货铺(miscellaneous)
  3. hihoCoder #1079 : 离散化 (线段树,数据离散化)
  4. 验证 .NET 4.6 的 SIMD 硬件加速支持的重要性
  5. 状态压缩---状态压缩dp第一题
  6. 如何实现第二窗口不显示在windows下面的任务栏中
  7. python基础一 day13 生成器
  8. 真爱 vs. 种姓:新一代印度人的婚恋观
  9. ES6新增Map、Set和iterable
  10. C05 C语言字符串和数组