1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; #define lc(p) tr[p].ls #define rc(p) tr[p].rs #define mid ((l+r)>>1) struct node{int ls,rs,siz;}tr[N*40];int rt[N],trlen,a[N]; void change(int &u,int v,int l,int r,int x) { u=++trlen;tr[u]=tr[v];tr[u].siz++; if(l==r)return; if(x<=mid)change(lc(u),lc(v),l,mid,x); else change(rc(u),rc(v),mid+1,r,x); } int query(int u,int v,int l,int r,int x) { if(u==v)return 0; if(l==r)return l; int siz=tr[lc(u)].siz-tr[lc(v)].siz; if(x<=siz)return query(lc(u),lc(v),l,mid,x); else return query(rc(u),rc(v),mid+1,r,x-siz); } int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,m;cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)change(rt[i],rt[i-1],0,1e9,a[i]); for(int i=1;i<=m;i++) { int l,r,k;cin>>l>>r>>k;l++,k++; cout<<query(rt[r],rt[l-1],0,1e9,k)<<'\n'; } return 0; }
- 1
信息
- ID
- 8134
- 时间
- 500ms
- 内存
- 1024MiB
- 难度
- 6
- 标签
- 递交数
- 24
- 已通过
- 11
- 上传者