Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Lasha Bukhnikashvili
- #include<iostream>
- #include<stdio.h>
- #include<math.h>
- #include<iomanip>
- #include<algorithm>
- #include<vector>
- #include<map>
- #include<queue>
- #include<string>
- #define Pi 3.14159265358
- #define mod9 %1000000009
- #define INF 1000000000
- #define mod7 %1000000007
- #define LL long long
- #define time clock()/(double)CLOCKS_PER_SEC
- using namespace std;
- int i,l1,r1,mid,n,m,x,y,z,a[100001],b[100001];;
- vector<int> T[400001];
- void merge(int v){
- int sz1=0,sz2=0,val1,val2;
- while (sz1<T[2*v].size() || sz2<T[2*v+1].size()){
- if (sz1<T[2*v].size()) val1=T[2*v][sz1]; else val1=2*INF+1;
- if (sz2<T[2*v+1].size()) val2=T[2*v+1][sz2]; else val2=2*INF+1;
- if (val1<val2){
- T[v].push_back(val1);
- sz1++;
- } else {
- T[v].push_back(val2);
- sz2++;
- };
- };
- };
- int f(int v,int key){
- int lx=0,midx,rx=T[v].size();
- rx--;
- while (lx<rx){
- if (lx==rx-1){
- if (T[v][rx]<=key) lx=rx;
- break;
- };
- midx=(lx+rx)/2;
- if (T[v][midx]<=key) lx=midx; else rx=midx-1;
- };
- if (T[v][lx]<=key) return lx+1; else return 0;
- };
- void BuildTree(int v,int tl,int tr){
- if (tl==tr){
- T[v].push_back(a[tl]);
- return;
- };
- int tm=(tl+tr)/2;
- BuildTree(2*v,tl,tm);
- BuildTree(2*v+1,tm+1,tr);
- merge(v);
- };
- int query(int v,int tl,int tr,int l,int r,int k){
- if (l>r) return 0;
- if (tl==l && tr==r) return f(v,k);
- int tm=(tl+tr)/2;
- return query(2*v,tl,tm,l,min(r,tm),k)+query(2*v+1,tm+1,tr,max(tm+1,l),r,k);
- };
- int main(){
- #ifndef ONLINE_JUDGE
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- #endif
- scanf("%d%d",&n,&m);
- for (i=1;i<=n;i++)
- scanf("%d",&a[i]),b[i]=a[i];
- sort(b+1,b+n+1);
- BuildTree(1,1,n);
- for (i=1;i<=m;i++){
- scanf("%d%d%d",&x,&y,&z);
- l1=1; r1=n;
- while (l1<r1){
- mid=(l1+r1)/2;
- if (query(1,1,n,x,y,b[mid])<z) l1=mid+1; else r1=mid;
- };
- printf("%d\n",b[l1]);
- };
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement