静态主席树

#include<bits/stdc++.h>
#define int long long
#define maxn 50000
using namespace std;
inline char get(){
    static char buf[30000],*p1=buf,*p2=buf;
    return p1==p2 && (p2=(p1=buf)+fread(buf,1,30000,stdin),p1==p2)?EOF:*p1++;
}
inline int read(){
    register char c=get();register int f=1,_=0;
    while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
    while(c<='9' && c>='0')_=(_<<3)+(_<<1)+(c^48),c=get();
    return _*f; 
}
int num,n,q;
int a[maxn],b[maxn],c[maxn],T[maxn];
int lc[maxn<<5],rc[maxn<<5],tree[maxn<<5];
int build(int l,int r){
    int id=++num,mid=(l+r)>>1;
    if(l!=r){
        lc[id]=build(l,mid);
        rc[id]=build(mid+1,r);
    }
    return id;
}
int update(int pre_id,int l,int r,int x,int v){
    int id=++num,mid=(l+r)>>1;
    lc[id]=lc[pre_id],rc[id]=rc[pre_id],tree[id]=tree[pre_id]+v;
    if(l!=r){
        if(x<=mid)lc[id]=update(lc[id],l,mid,x,v);
        else rc[id]=update(rc[id],mid+1,r,x,v);
    }
    return id;
}
int query(int l,int r,int x,int y,int k){
    if(l==r)return l;
    int mid=(l+r)>>1;
    int cas_l=tree[lc[y]]-tree[lc[x]];
    if(cas_l>=k)return query(l,mid,lc[x],lc[y],k);
    else return query(mid+1,r,rc[x],rc[y],k-cas_l);
}
signed main(){
    n=read(),q=read();
    for(register int i=1;i<=n;i++)a[i]=b[i]=read();
    sort(a+1,a+1+n);
    int m=unique(a+1,a+1+n)-a-1;
    T[0]=build(1,m);
    for(register int i=1;i<=n;i++)c[i]=lower_bound(a+1,a+1+m,b[i])-a,T[i]=update(T[i-1],1,m,c[i],1);
    while(q--){
        int l=read(),r=read(),k=read();
        cout<<a[query(1,m,T[l-1],T[r],k)]<<endl;
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 主席树的作用是寻找一个序列的某个区间的第k大(小)如:给出一个序列a1,a2...an,有若干个询问,每个询问形如...
    Gitfan阅读 3,532评论 0 0
  • 格式字符%d与%i的区别是什么? %i和%d 没有区别。%i 是老式写法。都是整型格式。int x,y;scanf...
    Littleston阅读 14,242评论 0 2
  • 新版的标准一直没有认真的去看,今天和顾姐一起到公司咨询,收货如下: 组织环境因素及分析变化; 可追溯性...
    徐慧棣阅读 1,027评论 0 0
  • 疏雨滴空阶,飒飒秋声透。枕簟初凉梦不成,夜长听更漏。 风并碎芙蓉,声寂银筝后。缕缕丝丝化作愁,对镜怜花瘦。...
    紫陌x阅读 3,150评论 4 14
  • 现在距离马上到来的2018年还有不到二十分钟的时间余额了,千言万语又怎是几句话可以说尽的。我想借着这张晚上刚拍的合...
    朝凪阅读 1,283评论 0 0

友情链接更多精彩内容