#include <iostream>
#include <algorithm>
#include <numeric>
#include <vector>
#include <set>
#define pb push_back
#define snd second
#define fst first
#define forn(i,n) for(int i=0;i<n;++i)
#define forsn(i,s,n) for(int i=s; i<n; ++i)
#define all(x) x.begin(), x.end()
#define imp(x) for(auto __:x)cout<<__<<" "; cout<<endl;
#define sz(c) int((c).size())
using namespace std;
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<ll> vi;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;cin>>n;
vi A(n);
forn(i,n)cin>>A[i];
int Q;cin>>Q;
vi X(Q);
forn(i,Q)cin>>X[i];
vector<ii> pref(n);
auto descomponer=[&](ll x)->ii{
ll cnt=1;
while(x%2==0){
x/=2;
cnt*=2;
}
return {x,cnt};
};
forn(i,n){
pref[i]=descomponer(A[i]);
}
//cout<<"==========="<<endl;
//forn(i,n){
//cout<<"( "<<pref[i].fst<<" "<<pref[i].snd<<") ";
//}
forsn(i,1,n){
pref[i].snd+=pref[i-1].snd;
}
forn(i,Q){
ll l=-1, r=n;
while(r-l>1){
ll m=(r+l)/2;
if(pref[m].snd<X[i]){
l=m;
}else r=m;
}
cout<<pref[r].fst<<endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |