标签:return strong fir play href tis sample script was
Time Limit: 20000MS | Memory Limit: 65536K | |
Total Submissions: 76404 | Accepted: 27483 | |
Case Time Limit: 2000MS |
Description
Input
Output
Sample Input
7 3 1 5 2 6 3 7 4 2 5 3 4 4 1 1 7 3
Sample Output
5 6 3
Hint
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <vector> 6 using namespace std; 7 const int maxn=1e5+5; 8 int n,m,x,y,k,cnt; 9 int a[maxn],root[maxn]; 10 vector<int> vec; 11 struct Node{ int l,r,sum; }A[maxn*40]; 12 int getid(int x) { return lower_bound(vec.begin(),vec.end(),x)-vec.begin()+1; } 13 14 void updata(int l,int r,int &now,int pre,int pos){ 15 A[++cnt]=A[pre]; now=cnt, A[now].sum++; 16 if(l==r) return; 17 int mid=l+r>>1; 18 if(mid>=pos) updata(l,mid,A[now].l,A[pre].l,pos); 19 else updata(mid+1,r,A[now].r,A[pre].r,pos); 20 } 21 22 int query(int l,int r,int x,int y,int pos){ 23 if(l==r) return l; 24 int mid=l+r>>1; 25 int m=A[A[y].l].sum-A[A[x].l].sum; 26 if(m>=pos) return query(l,mid,A[x].l,A[y].l,pos); 27 else return query(mid+1,r,A[x].r,A[y].r,pos-m); 28 } 29 30 int main(){ 31 ios::sync_with_stdio(false); 32 cin>>n>>m; 33 for(int i=1;i<=n;i++) cin>>a[i],vec.push_back(a[i]); 34 sort(vec.begin(),vec.end()); vec.erase(unique(vec.begin(),vec.end()),vec.end()); 35 for(int i=1;i<=n;i++) updata(1,n,root[i],root[i-1],getid(a[i])); 36 for(int i=1;i<=m;i++){ 37 cin>>x>>y>>k; 38 cout << vec[query(1,n,root[x-1],root[y],k)-1] << endl; 39 } 40 return 0; 41 }
标签:return strong fir play href tis sample script was
原文地址:https://www.cnblogs.com/qq-1585047819/p/11405664.html