#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXN = 2e5 + 10;
ll a[MAXN], sum[MAXN];
int n;
int bs(ll x){
int l = 1, r = n;
while(l < r){
int m = l + (r - l) / 2;
if(sum[m] >= x) r = m;
else l = m + 1;
}
int lsb = __builtin_ctz(a[r]);
return (a[r] >> lsb);
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cin >> n;
for(int i=1; i<=n; i++) cin >> a[i];
for(int i=1; i<=n; i++){
int lsb = __builtin_ctz(a[i]);
sum[i] = sum[i - 1] + (1LL << lsb);
}
int q; cin >> q;
while(q--){
ll x; cin >> x;
cout << bs(x) << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |