题目描述 Description

给定一个长度为N的序列,有Q次询问,每次询问区间[L,R]的中位数。

数据保证序列中任意两个数不相同,且询问的所有区间长度为奇数。

输入描述 Input Description

第一行为N,Q。

第二行N个数表示序列。

接下来Q行,每行为L,R,表示一次询问。

输出描述 Output Description

输出Q行,对应每次询问的中位数。

样例输入 Sample Input

5 3

1 4 8 16 2

1 5

3 5

3 3

样例输出 Sample Output

4

8

8

数据范围及提示 Data Size & Hint

40%的数据,N,Q≤100;

70%的数据,N≤100;

100%的数据,N≤1000,Q≤100000,序列中的元素为1到10^9之间的整数。

/*
可持续性线段树 求第k大
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#define N 100010
using namespace std;
int a[N],co[N],root[N],n,m,cnt;
struct node
{
int lc,rc,sum;
};node t[N*];
int read()
{
char c=getchar();int num=,flag=;
while(c<''||c>''){if(c=='-')flag=-;c=getchar();}
while(c>=''&&c<=''){num=num*+c-'';c=getchar();}
return num*flag;
}
int build(int v,int x,int y)
{
int k=++cnt;t[k].sum=v;
t[k].lc=x;t[k].rc=y;
return k;
}
void insert(int &root,int pre,int l,int r,int pos)
{
root=build(t[pre].sum+,t[pre].lc,t[pre].rc);
if(l==r)return;
int mid=(l+r)/;
if(pos<=mid)insert(t[root].lc,t[pre].lc,l,mid,pos);
else insert(t[root].rc,t[pre].rc,mid+,r,pos);
}
int query(int x,int y,int l,int r,int k)
{
if(l==r)return l;
int mid=(l+r)/;
int sum=t[t[y].lc].sum-t[t[x].lc].sum;
if(k<=sum)return query(t[x].lc,t[y].lc,l,mid,k);
else return query(t[x].rc,t[y].rc,mid+,r,k-sum);
}
int main()
{
freopen("jh.in","r",stdin);
n=read();m=read();
for(int i=;i<=n;i++)
{
a[i]=read();
co[i]=a[i];
}
sort(co+,co++n);
int num=unique(co+,co+n+)-co-;
for(int i=;i<=n;i++)
{
int pos=lower_bound(co+,co+num+,a[i])-co;
insert(root[i],root[i-],,num,pos);
}
for(int i=;i<=m;i++)
{
int l=read(),r=read(),k=(l+r)/-l+;
int pos=query(root[l-],root[r],,num,k);
printf("%d\n",co[pos]);
}
return ;
}

最新文章

  1. 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)
  2. 让reddit/r/programming炸锅的一个帖子,还是挺有意思的
  3. 提交 git 项目 到 github 在 centos 7
  4. Mac OSX 下用 Homebrew 安装 MongoDB 并配置到 WebStorm 中
  5. ASP.NET5 MVC6入门教学之一(自己动手)
  6. iOS上百度输入法引起的问题
  7. XML DOM 节点
  8. VS2012配置astyle格式化代码
  9. JAVA爬虫代码
  10. Linux的pwd命令详解
  11. 【神经网络篇】--基于数据集cifa10的经典模型实例
  12. [十二省联考2019]异或粽子 01trie
  13. ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用
  14. C#图像处理:Stream 与 byte[] 相互转换,byte[]与string,Stream 与 File 相互转换等
  15. CentOS 6.8 虚拟机安装详解
  16. 20155330 《网络对抗》 Exp5 MSF基础应用
  17. 【BZOJ3670】【NOI2014】动物园(KMP算法)
  18. Host-Only模式
  19. Spark+Hadoop+IDE环境搭建
  20. Sequel简介

热门文章

  1. P3349 [ZJOI2016]小星星
  2. (DP)51NOD 1049 最大子段和
  3. npm install 安装软件,出现 operation not permitted, mkdir &#39;C:\Program Files\nodejs\node_cache&#39;
  4. ASP.Net 知识点总结(三)
  5. JS数组、outerHtml、className
  6. 268 Missing Number 缺失的数字
  7. [转]Mysql之Union用法
  8. scala学习笔记1: scala method
  9. Roslyn导致发布网站时报错:编译失败
  10. phpstudy初级总结