题目链接:https://www.luogu.org/problem/P3834

主席树求静态区间第k小

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 200005
#define ll long long
int T[maxn*],L[maxn*],R[maxn*],sum[maxn*],tot;
ll a[maxn],b[maxn];
inline int update(int pre,int l,int r,int x)
{
int rt=++tot;
L[rt]=L[pre];
R[rt]=R[pre];
sum[rt]=sum[pre]+;
if(l<r)
{
int mid=l+r>>;
if(x<=mid)L[rt]=update(L[pre],l,mid,x);
else R[rt]=update(R[pre],mid+,r,x);
}
return rt;
}
inline int query(int u,int v,int l,int r,int k)
{
if(l>=r)return l;
int x=sum[L[v]]-sum[L[u]],mid=l+r>>;
if(x>=k)return query(L[u],L[v],l,mid,k);
else return query(R[u],R[v],mid+,r,k-x);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
b[i]=a[i];
}
sort(b+,b++n);
int len=unique(b+,b++n)-b-;
tot=;
for(int i=;i<=n;i++)
{
int pos=lower_bound(b+,b++len,a[i])-b;
T[i]=update(T[i-],,len,pos);
}
int l,r,k;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&l,&r,&k);
printf("%lld\n",b[query(T[l-],T[r],,len,k)]);
}
return ;
}

最新文章

  1. 记:MySQL 5.7.3.0 安装 全程截图
  2. 如何把Qlik Sense嵌入到Web应用中
  3. 如何在插件中添加Actor类
  4. django views中提示cannot convert dictionary update sequence element #0 to a sequence错误
  5. Excel应该这么玩——0、初衷:用IT方法玩Excel
  6. google全球地址大全
  7. 89. Gray Code
  8. 执行*.sh脚本时提示Permission denied
  9. paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
  10. httpclient源码分析之MainClientExec
  11. stringMVC_09文件批量上传
  12. 嵌入式的SQL程序设计
  13. bzoj4331: JSOI2012 越狱老虎桥
  14. 微信小程序列表加载更多
  15. 使用 ExceptionDispatchInfo 捕捉并重新抛出异常
  16. 2.Hadoop集群搭建之Hadoop(包含HDFS和Yarn)安装
  17. [Leetcode Week16]Insertion Sort List
  18. OPENGL_变换与坐标系
  19. javaEE(5)_Cookie和Session
  20. JS防止全局变量污染解决方案

热门文章

  1. java Set接口(元素不可以重复)
  2. Junit测试代码时出现initializationError 错误
  3. vue项目多列导入
  4. 【t092】迷之阶梯
  5. IDEA + Spring boot 单元测试
  6. 2018-10-23-使用-Pandoc-把-Markdown-转-Docx
  7. mangoDB 储存 id为objectid
  8. 0012 sublime快捷操作emmet语法
  9. 页面显示jsp源码问题
  10. spring boot 中事物的使用