This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |