제출 #982196

#제출 시각아이디문제언어결과실행 시간메모리
982196AiperiiiIntercastellar (JOI22_ho_t1)C++14
100 / 100
155 ms15684 KiB
#include <bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
using namespace std;
const int N=2e5+5;
int kol[N],a[N],t[N*4];
void build(int v,int tl,int tr){
    if(tl==tr)t[v]=kol[tl];
    else{
        int tm=(tl+tr)/2;
        build(v*2,tl,tm);
        build(v*2+1,tm+1,tr);
        t[v]=t[v*2]+t[v*2+1];
    }
}
int get(int v,int tl,int tr,int x){
    if(tl==tr)return a[tl];
    else{
        int tm=(tl+tr)/2;
        if(t[v*2]<x)return get(v*2+1,tm+1,tr,x-t[v*2]);
        else return get(v*2,tl,tm,x);
    }
}
signed main(){
    ios_base::sync_with_stdio();
    cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(a[i]%2==1)kol[i]=1;
        else{
            int x=a[i];
            int cnt=1;
            while(x%2==0){
                x/=2;
                cnt*=2;
            }
            kol[i]=cnt;
            a[i]=x;
        }
    }
    build(1,0,n-1);
    int q;
    cin>>q;
    while(q--){
        int pos;
        cin>>pos;
        cout<<get(1,0,n-1,pos)<<"\n";
    }
}
/*

 
*/




#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...