社区讨论
代码写成这样我还有救吗(违规紫杉
灌水区参与者 4已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m57sx2vs
- 此快照首次捕获于
- 2024/12/28 14:29 去年
- 此快照最后确认于
- 2025/11/04 12:16 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
vector<int>v,V;
struct S{int L,R,s;}t[2100010];
int rt[100010],id,l,r,k,n,m,i;
int bld(int l,int r){
int p=id++,M=l+r>>1;
return l^r&&(t[p]={bld(l,M),bld(M+1,r),0},0),p;
}
int ins(int p,int l,int r,int x){
int q=id++,M=l+r>>1;
return t[q]=l^r?x<=M?S{ins(t[p].L,l,M,x),t[p].R,t[p].s+1}:S{t[p].L,ins(t[p].R,M+1,r,x),t[p].s+1}:S{t[p].L,t[p].R,t[p].s+1},q;
}
int qry(int a,int b,int l,int r,int x){
int s=t[t[a].L].s-t[t[b].L].s,M=l+r>>1;
return l==r?l:s>=x?qry(t[a].L,t[b].L,l,M,x):qry(t[a].R,t[b].R,M+1,r,x-s);
}
main(){
for(cin>>n>>m,V.resize(n);i<n;)cin>>V[i++];
v=V,sort(v.begin(),v.end()),v.erase(unique(v.begin(),v.end()),v.end());
for(rt[0]=bld(0,v.size()-1),i=0;i++<n;)rt[i]=ins(rt[i-1],0,v.size()-1,lower_bound(v.begin(),v.end(),V[i-1])-v.begin());
for(;m--;cout<<v[qry(rt[r],rt[l-1],0,v.size()-1,k)]<<endl)cin>>l>>r>>k;
}
马蜂欣赏!
回复
共 8 条回复,欢迎继续交流。
正在加载回复...